2013-11-28 72 views
0

我在一个SQL查询中连接4个表中的数据时遇到了一些困难,我使用MySQL作为数据库部分,并且会对任何帮助给予帮助。SQL查询多个表的信息

下面是任务......

我有一个与列的表和数据

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

这看起来很直截了当。也许这是表格布局不符合你想要做的,所以你不能得到你期望的结果?看起来你是在出售所有者而不是物品,即销售是推销员和所有者之间的联系,所以你只能出售所有者拥有的每件物品,而不是特定物品。也许你应该在销售和物品之间建立联系,而不是销售和所有者? – Guffa

回答

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) 

如果有一个 - 到 - 多尝试用LEFT JOIN

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这样的东西,所以我有一些视觉表示?并简要总结一下你想要完成的事情 - 就像在你想要加入的地方一样?

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表有一个主键?

+1

检查与您的MySQL服务器版本相对应的手册,以便在'USING(Owner_id)INNER JOIN –

+0

附近使用正确的语法'我刚刚编辑:在USING之前移除了'ON'并将Salesman_number更改为Sale.Salesman_id –