我们有这样的声明:
(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)
我们有三个表:
res_bev
res_id | bev_id | IDBev_property
type_id | val_id | bev_id | ID属性值
名称 | ID
我正在寻找的是按 glass price(type_id='23') 然后按 bottle price(type_id='22') 订购的结果,但似乎联盟包含重复项,因为第一个选择返回说3456 | 7.5
,第二个返回3456 | 55
因为 price/Glass 是 7.5,price/Bottle 是 55;如何从要返回的第二个 SQL 语句和有序表中消除这些重复项?
此外,通过左连接创建一个伪表来创建一个表被愚弄了bev_id | price/Glass | price/Bottle
,但是由于这应该能够扩展到多种价格类型,我认为 UNION 会更有效。只需朝着正确的方向推动就会有所帮助。