MySQL PHP多个成员并将名称与日期关联

MySQL PHP多个成员并将名称与日期关联,php,mysql,Php,Mysql,我有一张“成员”表,如下所示。在尝试整理邮件列表时,我发现地址很简单。另一方面,名字却不多 | id | firstName | lastName | mbrGrpNum | mbrGrpNumID | dateJoined | -------------------------------------------------------------------- | 1 | Jane | Whitmore | 100100 | 01 | 2016-01-01

我有一张“成员”表,如下所示。在尝试整理邮件列表时,我发现地址很简单。另一方面,名字却不多

| id | firstName | lastName | mbrGrpNum | mbrGrpNumID | dateJoined |
--------------------------------------------------------------------
| 1  | Jane      | Whitmore | 100100    | 01          | 2016-01-01 |
| 2  | Bob       | Whitmore | 100100    | 02          | 2014-02-01 |
| 3  | Carol     | Evans    | 100101    | 01          | 2012-02-01 |
| 4  | Bob       | Roahns   | 100101    | 02          | 2015-09-28 |
| 5  | Corry     | Roahns   | 100101    | 03          | 2014-09-28 |
我想得到的输出是这样的,基于mbrGrpNum

1 Whitmore, Jane (01/16) & Bob (02/14)
2 Evans, Carol (02/12) & Rohns, Bob (09/15) & Corry (09/14)

最多可以有六个人拥有相同的
mbrgpnum
(基本上是一个家庭的成员),所有人都拥有不同的
mbrgpnumid

使用
CONCAT
连接行中的列,使用
GROUP\u CONCAT
连接组中的所有列

SELECT GROUP_CONCAT(
        CONCAT(lastName, ', ', firstName, ' (',
                DATE_FORMAT(dateJoined, '%m/%y'), ')')
        SEPARATOR ' & ') AS members
FROM members
GROUP BY mbrGrpNum
要组合具有相同姓氏的成员,需要使用子查询来查找它们

SELECT GROUP_CONCAT(CONCAT(lastName, ', ', family_members) SEPARATOR ' & ') AS members
FROM (
    SELECT mbrGrpNum, lastName,
            GROUP_CONCAT(
                CONCAT(firstName, ' (', DATE_FORMAT(dateJoined, '%m/%y'), ')') SEPARATOR ' & ') AS family_members
    FROM members
    GROUP BY mbrGrpNum, lastName) AS families
GROUP BY mbrGrpNum

@barmar是否可以将一个表的全部内容(即“地址”)与“组合成员”concat(上面列出的第二个)连接起来,以获得带有地址信息的连接输出?

我曾尝试过类似的方法,但输出在好的数据之间包含了几行空行,就像您的一样。看看这个。我对此完全目瞪口呆:您的一些
dateJoined
值是无效的日期。日期必须采用
YYYY-MM-DD
格式。因此,当它试图解析日期以便对其使用
DATE\u FORMAT()
时,它会得到
NULL
,这使得
CONCAT()
也返回
NULL
10-01-1952
应为
1952-10-01
。最好使用
DATE
数据类型,而不是此列的字符串。