SQL クエリに問題があるので、何をしたいのか説明しようと思います。これは、いくつかの結果行を返す私のクエリです。
SELECT
sck.sckid,
sck.prid,
sck.paid,
sck.sckcen,
sum(scd.scdkiek) as count_of_goods,
min(scn.scndat) as `date`
FROM sck
INNER JOIN scd ON scd.sckid = sck.sckid
INNER JOIN scn ON scn.scnid = scd.scnid
INNER JOIN sandeliai ON sandeliai.paid = sck.paid
WHERE sck.prid = 1376 GROUP BY sckid
そして、このクエリは結果の「表 1」を返します。
表1:
sckid | prid | sckcen | count_of_goods | date |
123 | 1376 | 10009 | 0 | 2012-12-31 |
124 | 1376 | 10007 | 15 | 2013-01-25 |
125 | 1376 | 10005 | 0 | 2013-02-13 |
126 | 1376 | 10000 | 18 | 2013-03-15 |
しかし、すべてのデータを でグループ化した 1 行だけが必要なのでprid
、次のクエリを書きました。
SELECT
sck.sckid,
sck.prid,
sck.paid,
sck.sckcen,
sum(scd.scdkiek) as count_of_goods,
min(scn.scndat) as `date`
FROM sck
INNER JOIN scd ON scd.sckid = sck.sckid
INNER JOIN scn ON scn.scnid = scd.scnid
INNER JOIN sandeliai ON sandeliai.paid = sck.paid
WHERE sck.prid = 1376 GROUP BY prid
次に、テーブルにこのデータを含む 1 つの行を取得します。
表 2:
sckid | prid | sckcen | count_of_goods | date |
123 | 1376 | 10009 | 23 | 2012-12-31 |
それはすべて正しいようですが、date
フィールドでは、count_of_goods > 0 を持つテーブル 1 から最も早い日付を返す必要があるため、次の結果が必要です。
表 3:
sckid | prid | sckcen | count_of_goods | date |
123 | 1376 | 10009 | 23 | 2013-01-25 |
では、表 3 のような結果を得るにはどうすればよいでしょうか?