SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 11.10.2014 12:55:14

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Помогите с запросом из 3 таблиц из одной нужно получить запись

Есть три таблицы
users // пользователи
post // Идентификаторы диалогов
message // Сообщения диалогов

Задача вывести список диалогов И 1 последнее сообщение каждого диалога

Вот таким запросом я получаю список диалогов и информацию по собеседнику учитывая что мой ID 1

Можно ли в этом же запросе вернуть еще и последнее сообщение  из таблицы message

Таблица message связана с таблицей post.c_id =  message.m_id

Заранее спасибо!


SELECT
  U.uid,
  U.name,
  C.c_id,
FROM  users U,
      post P
WHERE
  CASE
    WHEN P.uid_one = '1' THEN P.uid_two = U.uid
    WHEN P.uid_two = '1' THEN P.uid_one = U.uid
  END
ORDER BY C.c_id DESC
 

Неактивен

 

#2 11.10.2014 16:44:21

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Помогите с запросом из 3 таблиц из одной нужно получить запись

Ну тут два варианта - либо можете сделать join с таблицей messages и выбрать сообщение с самой поздней датой и дальше сгруппировать по посту, либо подзапросом.

Если не получается, то приведите таблицы и набор тестовых данных
Как в
http://sqlinfo.ru/forum/viewtopic.php?pid=35669#p35669
или
http://sqlinfo.ru/forum/viewtopic.php?pid=36260#p36260
или
http://sqlinfo.ru/forum/viewtopic.php?pid=20266#p20266
или на худой конец
http://sqlinfo.ru/forum/viewtopic.php?pid=28414#p28414

и желаемый результат.

А лучше на sqlfiddle smile, так еще быстрее будет всем.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 11.10.2014 21:51:48

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Re: Помогите с запросом из 3 таблиц из одной нужно получить запись

Спасибо за ответ.

Вот пример того что есть сейчас

http://sqlfiddle.com/#!2/e5169/1

Возвращается 2 результата 2 диалогов.

Моя цель получить еще в этих двух запросах данные из таблицы message, последние сообщения

Для USER3 post 1

Для USER2 post 3

Неактивен

 

#4 11.10.2014 22:06:13

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Помогите с запросом из 3 таблиц из одной нужно получить запись

http://sqlfiddle.com/#!2/e5169/1

Во, другой разговор smile

Попробуйте

SELECT
  U.uid,
  P.c_id,
  U.name,
  (SELECT `reply` FROM `message` WHERE c_id = P.c_id ORDER BY dttime DESC LIMIT 1)
FROM users U,
     post P
WHERE
  CASE
    WHEN P.uid_one = '1' THEN P.uid_two = U.uid
    WHEN P.uid_two = '1' THEN P.uid_one = U.uid
  END
ORDER BY P.c_id DESC;


995533 написал:

Таблица message связана с таблицей post.c_id =  message.m_id

В таблице message нет поля m_id wink, предположил, что должно быть c_id в таблице message.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 11.10.2014 22:12:31

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Re: Помогите с запросом из 3 таблиц из одной нужно получить запись

deadka написал:

В таблице message нет поля m_id wink, предположил, что должно быть c_id в таблице message.

Все получилось! большущее Вам спасибо! то что надо было!
Еще спасибо за наводку на ресурс sqlfiddle, ранее про него не знал!

Неактивен

 

#6 11.10.2014 22:14:37

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Помогите с запросом из 3 таблиц из одной нужно получить запись

А сейчас много этих fiddloв - js'ные есть да и нет только. Сильно упрощают жизнь девелоперам ).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 11.10.2014 22:18:10

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Re: Помогите с запросом из 3 таблиц из одной нужно получить запись

deadka написал:

А сейчас много этих fiddloв - js'ные есть да и нет только. Сильно упрощают жизнь девелоперам ).

Для css, javascript и тд знаю и пользуюсь, не думал, что для баз данных сделали.

Еще раз спасибо за помощь!

Неактивен

 

#8 11.10.2014 22:19:19

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Помогите с запросом из 3 таблиц из одной нужно получить запись

Не очень давно сделали, по всей видимости, я сам про него не столь давно узнал.
Обращайтесь ).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

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