Проблема с вашим запросом заключается в том, что подзапрос выполняет LIMIT 1
, что означает, что, хотя вы получили один список воспроизведения, но вы также получили один youtube_id
. Затем, когда вы запустили JOIN с videos
на этом сингле youtube_id
, он дает вам одну запись.
Исправление может заключаться в том, чтобы ВЫБРАТЬ только из таблицы playlists
в подзапросе и переместить JOIN для playlist_assignments
снаружи вместе с videos
соединением. Что-то вроде:
SELECT *
FROM (
SELECT id, title, position, youtube_id
FROM playlists p
WHERE title = 'My Top Videos'
LIMIT 1
) d
JOIN playlist_assignments pa USING (id)
JOIN videos v
USING (youtube_id)
ORDER BY position ASC;
Мой предложенный запрос:
SELECT `p`.`id` `playlist_id`, `p`.`title` `playlist_title`, `v`.`youtube_id` `youtube_id`, `v`.`title` `youtube_title`, `pa`.`position`
FROM `playlists` `p`
INNER JOIN `playlist_assignments` `pa` ON `p`.`id` = `pa`.`id`
INNER JOIN `videos` `v` ON `pa`.`youtube_id` = `v`.`youtube_id`
WHERE `p`.`title` = 'My Top Videos'
ORDER BY `pa`.`position`;
Надеюсь, это поможет. Дайте мне знать, сработало ли это или нет.