сортировка MySQL и GROUP

293
.
ситуация:
пытаюсь сообразить удобный модуль почты...
Есть входящие и исходящие письма...
//исходящие 
$req = mysql_query("SELECT `mail_msg`.`id` as `mid`,`mail_msg`.`time` as `tm`, `mail_msg`.`from_out` as `name`, `mail_msg`.`id_kont` as `user_id`, `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` ON `mail_msg`.`id_kont`=`users`.`id` WHERE `mail_msg`.`id_user`='" . $user_id . "' AND `mail_msg`.`sys`='1' AND `mail_msg`.`delete`!='" . $user_id  . "' ORDER BY `mail_msg`.`time` DESC LIMIT $start, $kmess");
//входящие
$req = mysql_query("SELECT `mail_msg`.`id` as `mid`, `mail_msg`.`time` as `tm`, `mail_msg`.`from` as `name`, `mail_msg`.`id_user` as `user_id`, `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` ON `mail_msg`.`id_user`=`users`.`id` WHERE `mail_msg`.`id_kont`='" . $user_id . "' AND `mail_msg`.`sys`='1' AND `mail_msg`.`delete`!='" . $user_id . "' AND `mail_msg`.`spam`='1' ORDER BY `mail_msg`.`time` DESC LIMIT $start, $kmess");

структура таблицы 'mail_msg' такая:
id|id_user|id_kont|time|from|from_out|tema|msg|
мне нужно сгруппировать исходящие и входящие в одно целое с сортировкой по времени...
Пытаюсь сделать так:
$req = mysql_query("SELECT `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` ON `mail_msg`.`id_user`=`users`.`id` WHERE `mail_msg`.`id_user`='" . $user_id . "' AND`mail_msg`.`id_kont`='" . $user_id . "' AND `mail_msg`.`sys`='1' AND `mail_msg`.`delete`!='" . $user_id  . "'
GROUP BY `mail_msg`.`from` 
ORDER BY `mail_msg`.`time`
DESC LIMIT $start, $kmess");
и не получается... Причем когда делаю GROUP отдельно входящих или исходящих всё прекрасно получается:
//одни входящие
$req = mysql_query("SELECT `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` ON `mail_msg`.`id_user`=`users`.`id` WHERE `mail_msg`.`id_kont`='" . $user_id . "' AND `mail_msg`.`sys`='1' AND `mail_msg`.`delete`!='" . $user_id  . "'
GROUP BY `mail_msg`.`from` 
ORDER BY `mail_msg`.`time`
DESC LIMIT $start, $kmess");
.
кто подскажет как сделать такую штуку?
Зы.скрин пример сгруппированных входящих...
Прикрепленные файлы:
.
короче я тут мозг всем взорвал.. кто нибудь понял о чем я?
.
В стельку трезвый
зачем делать 2 записи входящему письму и исходящему?
Достаточно сделать 1 запись и выводить ее в входящих и исходящих. И проблема отвалится. Гг.
.
Максим (11.06.2011/23:21)
зачем делать 2 записи входящему письму и исходящему?
Достаточно сделать 1 запись и выводить ее в входящих и исходящих. И проблема отвалится. Гг.
согласен... Но почта уже написана так и работает давненько... Просто хочется сделать ещё удобнее, а переписывать все записи и запросы нет времени и желания...
Теоритически понимаю что можно сделать то что я хочу, а практически не могу воплотить...
.
Lance (12.06.2011/06:02)
исходя из первых двух запросов видно, что в входящих `mail_msg`.`from`, а в исходящих `mail_msg`.`from_out`
[php]$req = mysql_query("SELECT `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` O
немного не так... 'from' это кому письмо, а 'from_out' это от кого письмо...
Сейчас почта имеет вид:
входящие
исходящие
и от туда можно попасть в историю переписки...
Скрин: входящие
Прикрепленные файлы:
.
вот история...
Прикрепленные файлы:
.
а сгрупировав хочу сделать список тех с кем велась переписка, при нажатии на ник сразу попадаешь в историю переписки с тем на кого нажал...
Скрин того что не до конца получается...
Прикрепленные файлы:
.
какбэ групировать нужно по никам из 'from' если 'from_out'=hooligan
и по 'from_out' если 'from'=hooligan
как то так... Не знаю как ещё объяснить...
Можно пример если понятно что я хочу, как это сделать? Я ещё новичек и многое не знаю просто...
.
hooligan, Если я правильно понял, можно так сделать
$count = mysql_num_rows(mysql_query("SELECT * 
			FROM `mail_msg` 
			WHERE id_user='" . $user_id . "' or id_kont='" . $user_id .
                "' GROUP BY id_kont;"));

            if ($count > 0) {

                $album = mysql_query("SELECT  * 
				FROM `mail_msg` 
				WHERE id_user='" . $user_id . "' or id_kont='" . $user_id .
                    "' GROUP BY id_kont LIMIT " . $start . "," . $kmess . ";");

                while ($add = mysql_fetch_array($album)) {

                    $total_out = mysql_num_rows(mysql_query("SELECT * 
					FROM `mail_msg` 
					WHERE id_user='" . $user_id . "' and id_kont='" . $add['id_kont'] . "';"));

                    $total = mysql_num_rows(mysql_query("SELECT * 
					FROM `mail_msg` 
					WHERE id_kont='" . $user_id . "' and id_user='" . $add['id_user'] . "';"));

                    $user = mysql_fetch_array(mysql_query("SELECT `name` 
					FROM `users` 
					WHERE id='" . $add['id_kont'] . "' LIMIT 1;"));

                    echo $user['name'] . '(' . $total . '/' . $total_out . ')<br />';

                }

                echo '<div class="phdr">Всего: ' . $count . '</div>';

            }
Всего: 11