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

Я новичок в 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 строки

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

Вы можете поделиться данными из своих входных таблиц Person и Visit?

lemon 17.05.2022 00:42
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 |
+-----+-------+----------------------------------+```

Другие вопросы по теме