MySQL - получить несколько строк в подзапросе - PullRequest
0 голосов
/ 29 мая 2020

У меня есть 2 таблицы: 1. каналы 2. photo_url

feed_id description photo_id feed_id url 1 one 1 1 a 2 two 2 1 b 3 three 3 3 c 4 3 d 5 3 e Каждый канал может иметь несколько фотографий (как указано выше)

Я пытаюсь запросить каналы вместе со списком соответствующих urls

SELECT f.feed_id, f.description,
(SELECT p.url as url FROM photo_url p WHERE p.feed_id = f.feed_id) as photo_url
FROM feed f 
where f.feed_id = 1;

В настоящее время я получаю эту ошибку: Код ошибки: 1241. Операнд должен содержать 1 столбец (столбцы)

На самом деле я ожидаю вывода как:

[ {
    "feed_id": 1,
    "description": "one",
    "photo_url":[{
             "url":"a"
            },
            {
             "url":"b"
            }]
   }]

Я пробовал с JOIN (LEFT, LEFT OUTER, INNER), но не получил желаемых результатов. Есть ли способ получить результат, используя вложенный запрос, или мне нужно oop отдельный запрос для каждой строки?

1 Ответ

1 голос
/ 29 мая 2020

Вам необходимо использовать GROUP_CONCAT :

SELECT f.feed_id, f.description, GROUP_CONCAT(p.url) as photo_url
FROM feed f
INNER JOIN photo_url as p ON p.feed_id = f.feed_id
WHERE f.feed_id = 1
GROUP BY f.feed_id;

Или без WHERE f.feed_id = 1:

SELECT f.feed_id, f.description, GROUP_CONCAT(p.url) as photo_url
FROM feed f
INNER JOIN photo_url as p ON p.feed_id = f.feed_id
GROUP BY f.feed_id;

Результат:

feed_id description photo_url
  1        one         a,b
  3       three        c,d,e

Отметьте это SQLfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...