我在一个SQL查询中加入来自4个表的数据时遇到了一点困境,我使用MySQL作为数据库部分,并且会对你提供给我的任何帮助。
这是任务......
我有包含列和数据的表
Sale Items Owner Salesman
-------------- ----------- ----------- --------------
*Salesman_id Item_type *Owner_id *Salesman_id
*Owner_id Item_color Owner_name Salesman_name
Buyer_id *Owner_id
Price
我想在我用重点文本标记的列上查询这些表。所以我可以得到像
这样的结果项目类型,项目颜色,所有者名称,推销员名称,推销员编号。
我尝试使用JOIN和嵌套查询来完成无数次迭代,但没有足够的结果。
答案 0 :(得分:1)
如果存在一对一关系,则可以使用内部联接
SELECT i.Item_type , i.Item_color ,o.Owner_name,sm.Salesman_name,sm.Salesman_id
FROM Salesman sm
INNER JOIN Sale s ON (s.Salesman_id = sm.Salesman_id )
INNER JOIN Owner o ON (s.Owner_id=o.Owner_id)
INNER JOIN Items i ON (i.Owner_id=o.Owner_id)
如果使用左连接进行一对多尝试
答案 1 :(得分:1)
试试这个
SELECT Item_type, Item_color, Owner_name, Salesman_name, Sale.Salesman_id FROM Items
INNER JOIN Owner USING(Owner_id)
INNER JOIN Sale USING(Owner_id)
INNER JOIN Salesman ON Salesman.Salesman_id=Sale.Salesman_id
为什么Items表没有主键?
答案 2 :(得分:0)
当我们不加入时,你希望它们只显示它们的值,你可以做类似的事情(我知道这不会直接回答OP的问题,但是我'到达那里......)
SELECT sale.`salesman_id`,sale.`owner_id`,
items.`order_id`,
owner.`owner_id`,
salesman.`salesman_id`
FROM `Sale` sale,
`Items` items,
`Owner` owner,
`Salesman` salesman
那应该归还一切。
但是,您的问题表明我们正在加入。你能把一些数据放到SQLFiddle这样的东西上,所以我有一些视觉表现吗?以及您要完成的内容的简要总结 - 例如您想要加入的位置?