簡體   English   中英

在一個結果行中選擇多個行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM