5

前に選択した行以外の結果を持つ行のみを選択する方法はありますか? 私のテーブルの 1 つで、広告データを保存します。これは、広告ごとに 1 行です。また、1 日、1 週間、1 か月ごとのレンタル料金を別のテーブルに保存します。このテーブルには、広告ごとに複数の行が含まれています。データ選択と同じクエリで、価格の 1 つ (テーブル 2 の行 1 と 3 の例) に変更があるテーブル 2 からすべての行を選択したいと考えています。この場合、GROUP_CONCAT を使用して 2 行の結果ではなく 1 行を取得する必要があることはわかっていますが、テーブル 2 から 2 つの結果行を取得し、合計で 1 つの結果行を取得するにはどうすればよいですか?

クエリの結果は次のようになります: tre,234,” 12345678911,12,45, 32555678911,12,67 ”</p>

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
4

1 に答える 1

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;

SQLFiddleで試してみました。

于 2012-11-27T07:04:34.737 に答える