Я новичок в 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 может быть использован как веб-серверами, так и при разработке автономных приложений.
Этот запрос даст вам немного другой результат (даты в одном столбце), но его будет легко разобрать, если вам нужно:
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 |
+-----+-------+----------------------------------+```