Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сложная группировка

Сообщения:  [1-10] 

 
 автор: oradev   (14.12.2012 в 22:15)   письмо автору
 
   для: 1prom   (09.12.2012 в 02:11)
 


(select numpost,numreceive,message,max(Md) as max_date
from msg
group by numpost)
union
(select numpost,numreceive,message,max(Md) as max_date
from msg
group by numreceive)
order by max_date;

  Ответить  
 
 автор: Sfinks   (12.12.2012 в 02:20)   письмо автору
 
   для: 1prom   (12.12.2012 в 01:47)
 

> так как у Вашего варианта mess по-моему никуда не клеится.
А по-моему вы вообще не поняли, что делает этот запрос.

> И все равно в phpmyadmin невозможно выбрать - пишет #1241 - Operand should contain 1 column(s)
Не "И все равно", а потому что наделали ошибок в запросе.

> Спасибо, но у меня невозможно выбрать строки.
Это что означает?
- Выдает ошибку? Тогда ошибку в студию!
- Выдает пустой результат? Тогда давайте дамп таблицы
Или что-то еще?

  Ответить  
 
 автор: 1prom   (12.12.2012 в 01:47)   письмо автору
 
   для: Sfinks   (10.12.2012 в 09:10)
 

Спасибо, но у меня невозможно выбрать строки.
Скрипт я немного изменил
SELECT Numpost np 
     , Numreceive nr 
     , max(Md) mx
     , (SELECT Numpost, Numreceive, message FROM Msg WHERE Numpost=np AND Numreceive=nr AND Md=max(m.Md))
FROM Msg m 
GROUP BY Numpost, Numreceive


так как у Вашего варианта mess по-моему никуда не клеится.
И все равно в phpmyadmin невозможно выбрать - пишет #1241 - Operand should contain 1 column(s)

  Ответить  
 
 автор: Sfinks   (10.12.2012 в 09:10)   письмо автору
 
   для: 1prom   (09.12.2012 в 14:26)
 

C этого и надо было начинать.

Еще не плохо было бы описать какое поле что обозначает.

Но если я правильно понял что к чему, то:
/*<?*/
SELECT numpost np
     
numreceive nr
     
max(md)mx
     
, (SELECT message FROM Msg WHERE numpost=np AND numreceive=nr AND md=max(m.md))mess
FROM Msg m
GROUP BY numpost
numreceive

  Ответить  
 
 автор: 1prom   (09.12.2012 в 14:26)   письмо автору
 
   для: Igorek   (09.12.2012 в 13:41)
 

Из моего запроса делается выборка всех сообщений.

А я хочу, чтобы если одно последнее сообщение пользователю (от пользователя) отобразилось, то остальные сообщения от этого пользователя (этому пользователю) не отображались.

Нужно отобразить все диалоги отсортировав по дате по последнему сообщению

  Ответить  
 
 автор: Igorek   (09.12.2012 в 13:41)   письмо автору
 
   для: 1prom   (09.12.2012 в 12:18)
 

тогда я не понимаю, зачем здесь группировка. Если из вашего запроса убрать группировку, то получим все отправленные/принятые сообщения пользователя отсортированные по дате в порядке убывания.
для наглядности:
SELECT *,
if(Numpost=1,'отправлено','получено') as type,
CASE (TO_DAYS(md)-TO_DAYS(NOW()))
WHEN 0 THEN  'сегодня'
WHEN -1 THEN  'вчера'
WHEN -2 THEN  'позавчера'
ELSE  md
END as dt
FROM Msg 
where Numpost=1 or Numreceive=1 
ORDER BY Md DESC

или здесь: http://sqlfiddle.com/#!2/1718c/17

  Ответить  
 
 автор: 1prom   (09.12.2012 в 12:18)   письмо автору
 
   для: Igorek   (09.12.2012 в 03:09)
 

Сори, нужно прогруппировать по получателях (отправителях), а потом посортировать по дате.
В таблице есть 2 номера (ид) - получателя и отправителя. $Numm - это мой номер. Нужно выбрать для меня сообщения - вот так примерно.

SELECT * FROM Msg where Numpost=$Numm or Numreceive=$Numm group by Numpost, Numreceive ORDER BY Md DESC

В результате должно быть выбрано примерно сообщения (напр.)
Сегодня полученное от Артура,
Вчера от Ксении
Позавчера отправленное Сергею
05 декабря полученное от Виталия

  Ответить  
 
 автор: cheops   (09.12.2012 в 08:31)   письмо автору
 
   для: 1prom   (09.12.2012 в 02:11)
 

Вероятно можно, однако следует более подробно описать, что в Numpost и Numreceive и что хотите получиться в конечном итоге? У нас нет перед глазами база данных, довольно трудно понять, какой запрос имеется в виду.

  Ответить  
 
 автор: Igorek   (09.12.2012 в 03:09)   письмо автору
 
   для: 1prom   (09.12.2012 в 02:11)
 

Так вам "посортировать" или "сложно погруппировать" надо? )
Вы уж определитесь. Это во-первых.
Во-вторых, опишите более внятно задачу. Добавьте кусок дампа и то, что хотелось бы получить из него.

  Ответить  
 
 автор: 1prom   (09.12.2012 в 02:11)   письмо автору
 
 

Здравствуйте!

Ингересует возможность сложной группировки.
В таблице сообщений msg есть
1 mid int(11) AUTO_INCREMENT
2 Numpost int(11)
3 Numreceive int(11)
4 message text utf8_general_ci
5 Md datetime

Можно ли посортировать сообщения по диалогам задейстровав Numpost и Numreceive?

Спасибо.

  Ответить  

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования