Mysql将多行组合成一行依赖于单个字段?

时间:2010-04-30 09:36:31

标签: mysql

这在输出时将多行合并为一个真正的问题:

我有三个表,表一(tableA)包含用户数据,如姓名和电子邮件,另一个(tableB)标记,如果他们希望收到电子邮件或短信通知,最后一个表(tableC)注明他们需要哪种类型的通知四种类型。

tableA和tableB为每个用户提供单行,但tableC最多可包含4个条目。

是否有可能将tableC的多个条目连接到单行返回,另外还有我其他两个表中的其他数据。也许在行中建立一些逗号分隔的字段?

我目前将此作为我的mySQL查询:

SELECT
ppf.page_id,
prv.`name`,
prv.surname,
prv.email,
prv.mobile,
ppf.email,
ppf.sms,
page_profile_noticetypes.noticetype
FROM
page_registration_value AS prv
Inner Join page_profile_value AS ppf ON prv.page_id = ppf.user
Inner Join page_profile_noticetypes ON page_profile_noticetypes.page_id = ppf.page_id
WHERE ppf.sms = 1 OR ppf.email = 1

以下是我获得的一些屏幕截图,然后是我希望拥有的内容(或类似内容)


What I get image http://strangemother.com/ex1.JPG


What I would like http://strangemother.com/ex2.JPG


优步谢谢。

1 个答案:

答案 0 :(得分:0)

@itsadok回答了它 - 结果:

SELECT
ppf.page_id,
prv.`name`,
prv.surname,
prv.email,
prv.mobile,
ppf.email,
ppf.sms,
GROUP_CONCAT(page_profile_noticetypes.noticetype)
FROM
page_registration_value AS prv
Inner Join page_profile_value AS ppf ON prv.page_id = ppf.user
Inner Join page_profile_noticetypes ON page_profile_noticetypes.page_id = ppf.page_id
WHERE ppf.sms = 1 OR ppf.email = 1
GROUP BY prv.email