【发布时间】:2012-06-18 21:36:21
【问题描述】:
我们有这样的声明:
(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 |身份证Bev_property
type_id | val_id | bev_id |身份证属性值
姓名 |身份证
我正在寻找的是按玻璃价格(type_id='23')然后按瓶价格(type_id='22')订购的结果,但似乎联盟包含重复项,因为第一个选择返回说@ 987654323@,第二个返回3456 | 55,因为价格/玻璃是7.5,价格/瓶子是55; 如何从要返回的第二个 SQL 语句和有序表中消除这些重复项?
另外,通过左连接创建伪表以创建bev_id | price/Glass | price/Bottle 的表被愚弄了,但是由于这应该能够扩展到多种价格类型,我认为 UNION 会更有效。只需朝着正确的方向推动就会有所帮助。
【问题讨论】:
-
我认为这个答案可能会有所帮助。 stackoverflow.com/questions/3730093/…