如何在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_id
和vendor_id
都受外键约束。因此,价格表中的条目不应该加入供应商/产品的可能性。【参考方案3】:
或编写 3 个不同的选择语句并将它们与 UNION 连接
【讨论】:
【参考方案4】:你不能重复使用同一个别名
Prices as pc
你只能使用一次电脑。
【讨论】:
以上是关于如何在sql中创建INNER JOIN多个表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel Controller 中创建 SQL Join 语句
带有 INNER JOIN 和 WHERE 的 SQL 查询