Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询多个表以获取信息_Mysql_Sql - Fatal编程技术网

Mysql SQL查询多个表以获取信息

Mysql SQL查询多个表以获取信息,mysql,sql,Mysql,Sql,在一个SQL查询中连接来自4个表的数据时,我有一点进退两难,我正在使用MySQL作为数据库部分,希望您能给我任何帮助 这是任务 我已经为带有列和数据的表创建了 Sale Items Owner Salesman -------------- ----------- ----------- -------------- *Salesman_id Item_type *Owner_id *Salesman_id *Owner_

在一个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
我想在我用强调文本标记的列上查询这些表。所以我可以得到这样的结果

项目类型、项目颜色、所有者姓名、销售人员姓名、销售人员编号


我已经经历了无数次迭代,试图通过连接和嵌套查询来实现这一点,但没有足够的结果。

如果存在一对一关系,可以使用内部连接

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