Я смотрю, смогу ли я получить нужные мне результаты одним запросом, и мои навыки работы с MySQL все еще находятся в юности.
У меня есть 4 таблицы: shows
, artists
, venues
и tours
. Упрощенная версия моего основного запроса сейчас выглядит так:
SELECT *
FROM artists AS a,
venues AS v,
shows AS s
LEFT JOIN tours AS t ON s.show_tour_id = t.tour_id
WHERE s.show_artist_id = a.artist_id
AND s.show_venue_id = v.venue_id
ORDER BY a.artist_name ASC, s.show_date ASC;
Я хочу добавить ограничение на количество показов на исполнителя . Я знаю, что могу SELECT * FROM artists
, а затем выполнить запрос с простым предложением LIMIT
для каждой возвращаемой строки, но я считаю, что должен быть более эффективный способ.
ОБНОВЛЕНИЕ: Проще говоря, я хочу выбрать до 5 шоу для каждого исполнителя. Я знаю, что мог бы сделать это (убрав все несоответствия):
<?php
$artists = $db->query("SELECT * FROM artists");
foreach($artists as $artist) {
$db->query("SELECT * FROM shows WHERE show_artist_id = $artist->artist_id LIMIT 5");
}
?>
Но, кажется, неправильно помещать другой запрос в цикл foreach
. Я ищу способ достичь этого в одном наборе результатов.