Выбор для каждой строки значений из связанной таблицы

Я новичок в SQL, и мне нужна помощь. Предположим, у меня есть две таблицы: Person (со столбцами PID и Name) и Visit (со столбцами PID (fk) и Date), где каждый Person может иметь несколько Visit.

Я хотел бы выбрать каждого человека (с условием, опущенным здесь) со всеми датами посещения в той же строке, что и человек, которому они принадлежат, например

| PID |  Name  |   Date   |   Date   |   Date   |
| ----| -------|--------- |----------|----------|
|   1 | Daniel | 25/01/21 | 13/06/21 |          |
|   2 | Nicole | 26/01/21 | 18/06/21 | 07/10/21 |
|   3 | Kayla  | 02/02/21 | 25/06/21 |          |

я пробовал

SELECT PersonID, Name (SELECT Date FROM Visit V WHERE V.PersonID = P.PersonID) FROM Person P

что явно не работает. MySQL говорит

#1242 - Подзапрос вернул более 1 строки

чего я и ожидал! Как я могу это решить?

🤔 А знаете ли вы, что...
MySQL может быть использован как веб-серверами, так и при разработке автономных приложений.


21
1

Ответ:

Решено

Этот запрос даст вам немного другой результат (даты в одном столбце), но его будет легко разобрать, если вам нужно:

SELECT person.PID,person.Name,group_concat(visit_date) as dates from person,visit where person.PID = visit.PID group by person.PID

Это будет что-то вроде этого:

+-----+-------+----------------------------------+
| PID | Name  | Dates                            |
+-----+-------+----------------------------------+
|   1 | Marek | 2022-05-15,2022-05-16,2022-05-12 |
|   2 | Magda | 2022-05-16,2022-05-16,2022-05-16 |
+-----+-------+----------------------------------+```