SQL查询多个表以获取信息

时间:2013-11-28 19:58:47

标签: mysql sql

我在一个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和嵌套查询来完成无数次迭代,但没有足够的结果。

3 个答案:

答案 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这样的东西上,所以我有一些视觉表现吗?以及您要完成的内容的简要总结 - 例如您想要加入的位置?