Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Вывести две таблицы одним запросом? (Anatoliy) 29/10/2011 - 05:56:51



From: Anatoliy - 29/10/2011 - 05:56:51
Subject:Вывести две таблицы одним запросом?
-----------------
Ищу красивое решение...

Типичная ситуация: две таблицы - questions и answers.
В questions юзеры задают вопросы, в answers другие юзеры отвечают, у обоих есть общий столбец unid, то есть одной записи в таблице questions могут соответствовать от нуля до нескольких записей в таблице answers.
Задача - сделать постраничный вывод (то есть с limit) всех вопросов (с ответами и без), но так, чтобы под каждым вопросом были перечислены все ответы на него.

Конечно, можно сделать выборку по вопросам, и на каждый результат делать выборку по ответам, что приведет к тому, что на каждой странице будет выполняться по 30+ mysql запросов, что как-то дико... Можно ли как-то оптимизировать через один запрос?

Если нет, то тогда другой вариант: выводить каждый вопрос, количество ответов на него и ПОСЛЕДНИЙ ответ по дате добавления. Пока я добился только того, что удается одним запросом через left join вывести вопрос, количество ответов и ПЕРВЫЙ ПОПАВШИЙСЯ ответ, при этом order by по столбцу с датой ответа никаким образом не влияет на то, какой именно ответ присоединится, похоже, mysql всегда берет первую попавшуюся запись:

SELECT unknown_questions.*, users.username, count(unknown_answers.unid) as cnt, unknown_answers.*
FROM unknown_questions
left join users on unknown_questions.userid=users.userid
left join unknown_answers on unknown_questions.unid=unknown_answers.unid
Group by unknown_questions.unid
order by undateadded desc


Что можете посоветовать?



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
40679



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |