2012-11-20 41 views
5

Có cách nào để chỉ chọn các hàng có kết quả khác với hàng đã chọn trước đó không? Trong một trong các bảng của tôi, tôi lưu trữ dữ liệu quảng cáo, đó là một hàng cho mỗi quảng cáo. Tôi cũng lưu trữ trong một bảng khác giá cho thuê mỗi dag, tuần, tháng, bảng này chứa nhiều hơn một hàng cho mỗi quảng cáo. Tôi muốn chọn al các hàng từ bảng 2, nơi có sự thay đổi trong một trong các giá (trong ví dụ hàng 1 và 3 trong bảng 2) trong cùng một truy vấn như lựa chọn dữ liệu. Tôi biết rằng tôi phải sử dụng GROUP_CONCAT để có được một hàng thay vì kết quả 2 hàng trong trường hợp này, nhưng làm cách nào để nhận được 2 hàng kết quả từ bảng 2 và 1 hàng kết quả trong tổng số?Truy vấn Mysql chỉ chọn các hàng có kết quả duy nhất trong GROUP_CONCAT

Kết quả của truy vấn phải là một cái gì đó như: 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 

tôi đã cố gắng

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 

Trả lời

2

Can bạn hãy thử cái này:

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; 

Tôi đã thử nó trên SQL Fiddle.

Các vấn đề liên quan