SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 29.10.2011 06:09:13

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

Вывести две таблицы одним запросом?

Ищу красивое решение...

Типичная ситуация: две таблицы - 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



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

Неактивен

 

Board footer

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