从相关 table 中为每一行选择值

Selecting for each row values from a related table

我是 SQL 的新手,需要一些帮助。假设我有两个表,Person(包含列 PID 和名称)和 Visit(包含列 PID (fk) 和日期),其中每个 Person 可以有多个 Visit s.

我想select每个人(有条件,此处省略)所有访问日期与他们所属的人在同一行,喜欢

| 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 行

这是我意料之中的!我该如何解决这个问题?

这个查询会给你一些不同的结果(日期在一列中),但如果你需要的话,它会很容易解析:

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 |
+-----+-------+----------------------------------+```