Простой вложенный запрос, но не работает как надо - MySQL

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Не могу понять что не так с вложенным запросом. Забегая вперед, скажу что он работает, т.е. ошибки не выдает, но работает не так как надо. Есть у меня таблица concrete_user_photos в которой, в поле albums_id хранятся ID строк другой таблицы, записанные в одну строчку через запятую. Например так: 15, 16, 17, 18 и т.д. Мне нужно извлечь эту строчку и вставить в запрос к другой таблице и получить соответственно результирующую таблицу из нужного количества строк (сколько указано в этом перечне). Делаю так:
$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);
Проблема в том, что находится только первая строка, все остальное откидывается. Почему? И как решить проблему? p.s. Это не вложенный запрос, знаю. Тему не знаю как изменить. Это 2 запроса с временной переменной. Но вложенный работает аналогично. Если с этим разберусь, то и со вложенным проблем не будет.

Решение задачи: «Простой вложенный запрос, но не работает как надо»

textual
Листинг программы
"SELECT `id_album`, `album_name`, `album_photo`, `photos_id`, `photos_count` FROM `user_photo_albums` WHERE `id_album` IN ( {$albums} )";
$link->query($sqlRequest);

Объяснение кода листинга программы

  1. В данном коде используется язык SQL (Structured Query Language), который является стандартным языком запросов к реляционным базам данных.
  2. Код выполняет простой вложенный запрос к таблице user_photo_albums.
  3. В запросе выбираются следующие поля: id_album, album_name, album_photo, photos_id, photos_count.
  4. В WHERE-условии используется оператор IN для фильтрации результатов по полю id_album.
  5. Значение $albums представляет собой список идентификаторов альбомов, которые нужно выбрать. Это значение вставляется в запрос с использованием строкового синтаксиса (символов ${}).
  6. Для выполнения запроса используется объект $link, который представляет собой активный SQL-соединение с базой данных.
  7. Метод query объекта $link выполняет запрос к базе данных.
  8. Результатом выполнения запроса будет набор данных, который можно использовать для дальнейшей обработки или вывода на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5