SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.09.2012 18:17:22

multiton
Участник
Зарегистрирован: 19.09.2012
Сообщений: 1

Прошу помощи в построении сложного запроса

Здравствуйте! Есть таблица messages для личных сообщений:

--
-- Структура таблицы `messages`
--

CREATE TABLE IF NOT EXISTS `messages` (
  `mess_id` int(100) NOT NULL AUTO_INCREMENT,
  `dir_id_sender` int(100) NOT NULL DEFAULT '1',
  `dir_id_recept` int(100) NOT NULL DEFAULT '1',
  `sender` int(100) NOT NULL,
  `recept` int(100) NOT NULL,
  `mess` varchar(10000) NOT NULL,
  `mess_date` datetime NOT NULL,
  `unread_only` int(1) NOT NULL DEFAULT '0',
  `hidden_sender` varchar(1) NOT NULL DEFAULT 'n',
  `hidden_recept` varchar(1) NOT NULL DEFAULT 'n',
  PRIMARY KEY (`mess_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=721 ;

Где: dir_id_sender - ИД папки отправителя сообщения
dir_id_recept -ИД папки получателя
sender - ИД юзера отправителя
recept -ИД юзера получателя

например:
dir_id_sender = 1
dir_id_recept = 2
sender = 3
recept = 7

Есть исходная функция подсчета кол. контактов в папке:
// СОСЧИТАТЬ ВСЕ КОНТАКТЫ ПО ПАПКАМ
function cont_total($messdir){
global $sender, $query, $assoc;

$sql = "SELECT messages.*, users.id FROM messages
JOIN users ON messages.recept <> '$sender' AND messages.recept=users.id OR messages.sender <> '$sender' AND messages.sender=users.id
WHERE (sender='$sender' OR recept='$sender') AND dir_id_sender='$messdir' AND messages.hidden_sender <> 'y'";

$cont_total_query = $query($sql);
$cont_total = 0;
while($row = $assoc($cont_total_query)) {
$c[$row[id]]sad$c[$row[id]]+1);
if($c[$row[id]] == 1){
$messages_array[$cont_total] = Array('mess_id' => $row[mess_id]);
$cont_total++;
}
}
return $cont_total;
}

Где любое кол. строк с ИД юзеров 3 и 7 - идет подсчет за один контакт. Но возникла проблема, как правильно построить запрос, что бы данная функция возвращала результат при различных значениях ИД папок ($messdir - 1 и 2) для ИД юзера 3 - только по значению  $messdir=1. И наоборот для юзера ИД=7 только при $messdir=2?

Неужели так все сложно я задумал, что нет ни одного предложения? За решение данной проблемы, готов отплатить по договоренности! Предложения по аске 220590594

Отредактированно multiton (22.09.2012 16:46:52)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson