如何在sql中创建INNER JOIN多个表

Posted

技术标签:

【中文标题】如何在sql中创建INNER JOIN多个表【英文标题】:How to create INNER JOIN multiple tables in sql 【发布时间】:2011-05-23 12:49:55 【问题描述】:

我有 3 个表:产品、供应商和价格。价格有 product_id 和 vendor_id 作为外键。现在我想将价格显示为:

price_id:product_name:vendor_name:price

类似:

SELECT p.product, v.vendor, pc.price
FROM Products AS p,
Vendors AS v
INNER JOIN Prices AS pc
ON p.product_id = pc.product_id
INNER JOIN Prices AS pc
ON v.vendor = pc.vendor_id

但我没有得到它的工作。

【问题讨论】:

【参考方案1】:

您好,我有 3 个不同的表,这个查询运行良好。

SELECT A.ID_USER,A.NAME,D.ADDRESS,B.ID_STATE,B.STATE,A.ID_COUNTRY,C.COUNTRY 
FROM market.USER A 
    INNER JOIN market.state B
ON   A.ID_STATE=B.ID_STATE 
    INNER JOIN market.country C
ON A.ID_COUNTRY=C.ID_COUNTRY
    INNER JOIN market.contact D
ON A.ID_CONTACT=D.ID_CONTACT

尝试根据自己的要求进行操作。

【讨论】:

【参考方案2】:

试试这个:

SELECT pr.price_id, p.product_name v.vendor_name, pr.price
FROM Prices AS pr
LEFT JOIN Products AS p ON p.product_id = pr.product_id
LEFT JOIN Vendors AS v ON v.vendor = pr.vendor_id

【讨论】:

为什么是LEFT JOIN 而不是INNER?问题指出product_idvendor_id 都受外键约束。因此,价格表中的条目不应该加入供应商/产品的可能性。【参考方案3】:

或编写 3 个不同的选择语句并将它们与 UNION 连接

【讨论】:

【参考方案4】:

你不能重复使用同一个别名

Prices as pc

你只能使用一次电脑。

【讨论】:

以上是关于如何在sql中创建INNER JOIN多个表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel Controller 中创建 SQL Join 语句

带有 INNER JOIN 和 WHERE 的 SQL 查询

SQL语句中LEFT JOIN和RIGHT JOIN 以及INNER JOIN的区别

HQL Hibernate INNER JOIN

如何在 SQL 中创建临时表以用于多个 ADF 活动?

使用 INNER JOIN 更新 SQL Server 中的多个表 [重复]