我有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/

10-10 18:12