我有3张桌子A,B和C。
表A包含产品详细信息,其中没有价格列。
表B和C包含带有价格列的产品详细信息。
表A中的产品可能存在也可能不存在于表B或C中。
我想获取表A或表B中存在的表A产品的最低价格,然后从B或C中选择最低价格
假设表A具有Property1,Property2和Property3
表B具有Price,Property1,Property2和Property3
表C具有Price,Property1,Property2和Property3
从表B或C中获得产品的最低价格,以A.properties与B和C的属性匹配的价格为准
我该如何查询。
最佳答案
尝试这个:
SELECT big.prop1, big.prop2, MIN(big.price)
FROM (
SELECT a.prop1, a.prop2, b.price
FROM TableA a
INNER JOIN TableB b ON a.prop1 = b.prop1 AND a.prop2 = b.prop2
UNION
SELECT a.prop1, a.prop2, c.price
FROM TableA a
INNER JOIN TableC c ON a.prop1 = c.prop1 AND a.prop2 = c.prop2
) AS Big
GROUP BY big.prop1, big.prop2
但是,这是一种不好的做法,您需要为每个组合和属性的外键连接表。
关于mysql - 通过比较列值和没有主键或外键关系来查询3个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36325200/