Простой вложенный запрос, но не работает как надо - MySQL
Формулировка задачи:
Здравствуйте!
Не могу понять что не так с вложенным запросом. Забегая вперед, скажу что он работает, т.е. ошибки не выдает, но работает не так как надо.
Есть у меня таблица concrete_user_photos в которой, в поле albums_id хранятся ID строк другой таблицы, записанные в одну строчку через запятую. Например так: 15, 16, 17, 18 и т.д.
Мне нужно извлечь эту строчку и вставить в запрос к другой таблице и получить соответственно результирующую таблицу из нужного количества строк (сколько указано в этом перечне).
Делаю так:Проблема в том, что находится только первая строка, все остальное откидывается. Почему? И как решить проблему?
p.s. Это не вложенный запрос, знаю. Тему не знаю как изменить. Это 2 запроса с временной переменной. Но вложенный работает аналогично. Если с этим разберусь, то и со вложенным проблем не будет.
$sqlRequest = "SELECT @albums := `albums_id` FROM `concrete_user_photos` WHERE `user_id` = $idUser"; $link->query($sqlRequest); $sqlRequest = "SELECT `id_album`, `album_name`, `album_photo`, `photos_id`, `photos_count` FROM `user_photo_albums` WHERE `id_album` IN ( @albums )"; $link->query($sqlRequest);
Решение задачи: «Простой вложенный запрос, но не работает как надо»
textual
Листинг программы
"SELECT `id_album`, `album_name`, `album_photo`, `photos_id`, `photos_count` FROM `user_photo_albums` WHERE `id_album` IN ( {$albums} )"; $link->query($sqlRequest);
Объяснение кода листинга программы
- В данном коде используется язык SQL (Structured Query Language), который является стандартным языком запросов к реляционным базам данных.
- Код выполняет простой вложенный запрос к таблице
user_photo_albums
. - В запросе выбираются следующие поля:
id_album
,album_name
,album_photo
,photos_id
,photos_count
. - В WHERE-условии используется оператор IN для фильтрации результатов по полю
id_album
. - Значение
$albums
представляет собой список идентификаторов альбомов, которые нужно выбрать. Это значение вставляется в запрос с использованием строкового синтаксиса (символов${}
). - Для выполнения запроса используется объект
$link
, который представляет собой активный SQL-соединение с базой данных. - Метод
query
объекта$link
выполняет запрос к базе данных. - Результатом выполнения запроса будет набор данных, который можно использовать для дальнейшей обработки или вывода на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д