次のステートメントがあります。
(SELECT res_bev.bev_id, property_value.name AS priority
FROM res_bev, bev_property, property_value
WHERE res_bev.res_id='$resIn'
AND bev_property.bev_id=res_bev.bev_id
AND bev_property.type_id='23'
AND property_value.id=bev_property.val_id)
UNION
(SELECT res_bev.bev_id, property_value.name as priority
FROM res_bev, bev_property, property_value
WHERE res_bev.res_id='$resIn'
AND bev_property.bev_id=res_bev.bev_id
AND bev_property.type_id='22'
AND property_value.id=bev_property.val_id)
3 つのテーブルがあります。
res_bev
res_id | bev_id | IDBev_property
type_id | val_id | bev_id | IDプロパティ値
の名前 | ID
私が探しているのは、ガラスの価格(type_id = '23')、次にボトルの価格(type_id = '22')で注文される結果ですが、最初の選択が返さ3456 | 7.5
れ、2番目の返されるという事実のために、ユニオンには重複が含まれているようです3456 | 55
価格/グラスは 7.5 で、価格/ボトルは 55 です。これらの重複を 2 番目の SQL ステートメントから削除して、テーブルを返すにはどうすればよいですか?
また、左結合を介して疑似テーブルを作成して のテーブルを作成することにだまされましたがbev_id | price/Glass | price/Bottle
、これは複数の価格タイプに拡張できるはずなので、UNION の方が効率的であると考えました。正しい方向に押すだけで役に立ちます。