私は私の人生のために私がコンポジットキーを返す派生クエリで解決することはできませんが、その内の別のフィールドにMIN()集計関数を実行することはできません非常にイライラのSQLの問題があります表。私は複合キーの1つでMIN()を実行していた場合は簡単ですが、私は両方のキーを返し、MIN()関数を外側のクエリと同様に実行する必要があるため、これを行う方法を考えることができません。クエリ全体は次のようになります。SQLコンポジットキーグループ化の問題
SELECT
p.name as productname
,tmp.packageid
,tmp.price
,ppk2.packageoptionid
,ppk2.selcomproductid
FROM (
SELECT ppk.productid, ppk.packageid, MIN(ppk.price) as price
FROM product_package ppk
INNER JOIN package pk ON ppk.packageid = pk.id
INNER JOIN [plan] pl ON pk.planid = pl.id
WHERE pk.networkid = 1
GROUP BY ppk.productid, ppk.packageid
) tmp
INNER JOIN product_package ppk2 ON (
ppk2.productid = tmp.productid
AND ppk2.packageid = tmp.packageid
)
INNER JOIN product p ON (p.id = ppk2.productid)
WHERE p.isenabled = 1;
現在の結果:
--------------------------------------
productid | packageid | price
1 500 0
1 501 19.95
1 502 29.95
2 501 0
3 500 15
3 504 39.95
望ましい結果:
--------------------------------------
productid | packageid | price
1 500 0
2 501 0
3 500 15
私は独特の必要があるとして、私の問題はどこにあるの導出問合せは "tmpは" あります最も低い価格の各製品/パッケージの組み合わせごとに行を戻してから、外部表に結合してください。
ご協力いただければ幸いです!
良い質問です。今すぐ:[pastebinアカウント](http://pastebin.com/)にサインアップして、stackoverflowがあなたのコードの周りに置くそれらの醜いスライダーバーを見る必要はありませんか? ':)' – Droogans
@Droogansか、コードを書式設定するだけです。 – ninesided
@ninesided:Touche、good sir。 – Droogans