[英]Multiple select from one row from A table and insert result as multiple rows in B table and repeat in one query
[英]select multiple rows in one result row
在我的一張桌子中,我存儲了我的廣告數據,即每個廣告一行。 我還將一些日期存儲在另一個表中,但是每個日期只有一行,因為我不知道特定廣告的日期是多少。 我想在與數據選擇相同的查詢中選擇日期(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"
日期列可以是一個字符串,其中日期用逗號分隔....
有任何想法嗎?
您可以使用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
您可以使用GROUP_CONCAT函數將行轉換為列
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.