2012-11-20 63 views
5

有沒有方法可以只選擇具有與先前選擇的行不同的結果的行? 在我的一個表格中,我存儲了廣告數據,這是每個廣告一行。我還在其他表格中存儲了每個星期,每週,每月的租金價格,該表格每個廣告包含多行。 我想從表2中選擇相同查詢中某個價格(在示例第1行和第3行中)與數據選擇相同的行。我知道在這種情況下,我必須使用GROUP_CONCAT來獲取一行而不是兩行結果,但是如何從表2和結果行總共獲得2個結果行?Mysql查詢僅在GROUP_CONCAT中選擇具有唯一結果的行

查詢的結果必須是這樣的:TRE,234,」 12345678911,12,45,32555678911,12,67」

Table 1 (advertisements) 
ID_adv  data1  data2 
1  tre  234 
2  ghj  34 
3  jk  098 
4  jfjk  12 

Table 2 (dates) 
ID_dates ID_adv  timestamp_day price1  price2 
1  1  12345678911  12  45 
2  1  22345677771  12  45 
3  1  32555678911  12  67 
4  2  42345671231  34  34 

我試圖

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 

回答

2

你能試試這個:

SELECT T3.ID_adv 
    , T3.data1 
    , T3.data2 
    , CAST(GROUP_CONCAT(CONCAT(T3.timestamp_day, ',', T3.price1, ',', T3.price2)) AS CHAR) AS DatePrice 
    FROM (
     SELECT T1.* 
      , MIN(T2.timestamp_day) AS timestamp_day 
      , T2.price1 
      , T2.price2 
      FROM Table1 T1 
      LEFT JOIN Table2 T2 ON T2.ID_adv = T1.ID_adv 
      GROUP BY T1.ID_adv, T2.price1, T2.price2 
    ) T3 
    GROUP BY T3.ID_adv; 

我試過了SQL Fiddle