Mysql SQL查询多个表以获取信息
在一个SQL查询中连接来自4个表的数据时,我有一点进退两难,我正在使用MySQL作为数据库部分,希望您能给我任何帮助 这是任务 我已经为带有列和数据的表创建了Mysql SQL查询多个表以获取信息,mysql,sql,Mysql,Sql,在一个SQL查询中连接来自4个表的数据时,我有一点进退两难,我正在使用MySQL作为数据库部分,希望您能给我任何帮助 这是任务 我已经为带有列和数据的表创建了 Sale Items Owner Salesman -------------- ----------- ----------- -------------- *Salesman_id Item_type *Owner_id *Salesman_id *Owner_
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
我想在我用强调文本标记的列上查询这些表。所以我可以得到这样的结果
项目类型、项目颜色、所有者姓名、销售人员姓名、销售人员编号
我已经经历了无数次迭代,试图通过连接和嵌套查询来实现这一点,但没有足够的结果。如果存在一对一关系,可以使用内部连接
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)
如果在我们不加入时,有一对多尝试左加入的解决方案,并且您希望他们只显示他们的值,您可以这样做(我知道这并不能直接回答OP的问题,但我已经做到了…) 这应该会回报一切 然而,你的问题表明我们正在加入。你能不能把一些数据放进类似的东西,这样我就有了一些视觉表现?以及您要完成的工作的简要总结—例如,您想在哪里加入?试试这个
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表没有主键?看起来很简单。也许是表格布局不适合您想要做的事情,所以这就是为什么您不能得到预期的结果?看起来您是销售所有者,而不是物品,即销售是销售人员和所有者之间的联系,因此您只能销售所有者拥有的所有物品,而不是特定物品。也许你应该在销售和物品之间建立连接,而不是在销售和所有者之间建立连接?检查与你的MySQL服务器版本相对应的手册,以获得正确的语法,以便使用“使用(所有者id)内部JOINi刚刚编辑的:在使用
之前删除上的,并将saller\u编号更改为sale.saller\u id
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