在我的一张桌子中,我存储了我的广告数据,即每个广告一行。 我还将一些日期存储在另一个表中,但是每个日期只有一行,因为我不知道特定广告的日期是多少。 我想在与数据选择相同的查询中选择日期(ID adventisement = 1),分隔bij a komma。唯一的问题是我得到的行数和日期一样多,我只想要一行数据......
Table 1 (Advertisements)
ID_adv data 1 data2
1 name1 picture1
2 name2 picture2
3 name3 picture3
4 name4 picture4
Table 2 (Dates)
ID ID_adv date
1 2 1-1-2012
2 2 2-1-2012
3 3 1-1-2012
4 3 2-1-2012
5 3 3-1-2012
6 3 4-1-2012
结果查询(Select ID_adv, data1, data2, dates WHERE ID_adv = 3)
3,name3,picture3,"1-1-2012,2-1-2012,3-1-2012,4-1-2012"
日期列可以是一个字符串,其中日期用逗号分隔....
有什么想法吗?
答案 0 :(得分:29)
您可以使用GROUP_CONCAT()
和GROUP BY
来获得所需的结果:
SELECT t1.*, GROUP_CONCAT(t2.date) AS dates
FROM Table1 t1
LEFT JOIN Table2 t2
ON t2.ID_adv = t1.ID_adv
GROUP BY t1.ID_adv
这将返回每个广告的所有日期,并以逗号连接。如果特定广告在表2中没有日期,则日期列将为NULL。
要定位特定广告,只需添加WHERE
子句:
SELECT t1.*, GROUP_CONCAT(t2.date) AS dates
FROM Table1 t1
LEFT JOIN Table2 t2
ON t2.ID_adv = t1.ID_adv
WHERE t1.ID_adv = 3
GROUP BY t1.ID_adv
答案 1 :(得分:2)
您可以使用GROUP_CONCAT函数
将行转换为列