[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите написать SQL запрос
greatilya
Имеется 2 таблицы. Можно ли сделать так, чтоб запрос был один для такой схемы:
SQL
SELECT `id_first_msg` , `num_replies` , `num_views` , `locked`
FROM `smf_topics` WHERE `id_board` =2 AND `id_member_started` =1
ORDER BY `id_topic` DESC LIMIT 0, 5

после этого запроса я получу 5 записей. после выполняем для каждой записи еще по 1 запросу:
SQL
SELECT `id_msg` , `poster_time` , `subject` , `poster_name` , `body`
FROM `smf_messages` WHERE `id_msg` =5

только заместо
SQL
`id_msg` =5
позставляем значение `id_first_msg` из первого запроса.
итого на выходе у нас получается массив из 5 строк с полями: id_msg(либо id_first_msg), num_replies, num_views, locked, poster_time, subject, poster_name, body.
Но в этой схеме пришлось сделать 6 запросов. Можно ли эти запросы объеденить? Подскажите как?



Спустя 20 минут, 16 секунд (31.07.2009 - 05:39) kirik написал(а):
Цитата (greatilya @ 30.07.2009 - 21:18)
Можно ли эти запросы объеденить? Подскажите как?

Угу, можно. Читай про JOIN.

Думаю что это должно подойти:
SQL
SELECT `st`.`id_first_msg`,
`st`.`num_replies`,
`st`.`num_views`,
`st`.`locked`,
`sm`.`poster_time`,
`sm`.`subject`,
`sm`.`poster_name`,
`sm`.`body`
FROM `smf_topics` AS `st`
LEFT JOIN `smf_messages` AS `sm` ON `sm`.`id_msg` = `st`.`id_first_msg`
WHERE `st`.`id_board` = 2 AND `st`.`id_member_started` = 1
ORDER BY `st`.`id_topic` DESC LIMIT 0, 5

Спустя 11 минут, 29 секунд (31.07.2009 - 05:50) greatilya написал(а):
Спасибо за оперативный ответ! Спасибо и за то что полностью запрос написали). Вот теперь я понял как составлять подобные запросы. Проверить получится правда только вечером.

Еще раз спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.