mysql - 通过比较列值来查询 3 个表,并且没有主键或外键关系

标签 mysql sql sql-server database join

我有 3 个表 A、B 和 C。 表 A 包含产品详细信息,其中没有价格列。 表 B 和 C 包含产品详细信息,其中包含价格列。

表 A 中的产品可能出现在表 B 或 C 中,也可能不出现。

如果表 A 的产品出现在表 B 或 C 中,我想获取它的最低价格,并从 B 或 C 中选择最低价格

假设表 A 具有 Property1 、 Property2 和 Property3

<小时/>

表 B 包含价格、属性 1、属性 2 和属性 3

<小时/>

表 C 包含价格、属性 1、属性 2 和属性 3

从表 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/

相关文章:

php - PDO 数据库类不会在捕获异常时停止

C# - 什么是超时和失败连接的好的 SQLException 错误处理

sql - 在SQL Server中,如何在select中创建while循环

sql - 如何在单个 select 语句中替换多个字符串?

mysql - 在触发器中分配列值导致 "Unknown system variable"错误

mysql选择并取平均值

php - 从mysql生成多个txt文件

sql - 在同一查询中使用 SUM 的结果

sql - SQL中是否存在 "LIKE"和 "IN"的组合?

sql - Adventure Work 数据库中复合主键的概念