Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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 无法通过连接4个表获取数据_Mysql_Sql - Fatal编程技术网

Mysql 无法通过连接4个表获取数据

Mysql 无法通过连接4个表获取数据,mysql,sql,Mysql,Sql,我试图通过组合4个表来获取数据,但无法获得所需的结果。 下面是我的截断表结构 order_line ---------- id item_id --> item_type_map(item_id) amount quantity item_type --------- id --> item_type_map(type_id) category_name item_type_map ------------- item_id type_id international

我试图通过组合4个表来获取数据,但无法获得所需的结果。 下面是我的截断表结构

order_line
----------
id
item_id --> item_type_map(item_id) 
amount
quantity

item_type
---------
id --> item_type_map(type_id)    
category_name

item_type_map
-------------
item_id
type_id

international_description
-------------------------
foreign_id --> order_line(item_id)
content
每个项目(上面未显示的表格)都属于一个项目类型。
查询的输入将是项目类型ID的列表。然后在项目方面,我需要选择
项目类型、类别、名称、订单行、金额、订单行、金额、国际描述、内容

我尝试了很多组合,但都没有达到预期的效果

例如,我尝试的一个查询是:-

select 
  item_type.category_name, 
  order_line.item_id, 
  international_description.content, 
  sum(order_line.amount) as amount, 
  sum(order_line.quantity) as quantity 
FROM order_line 
INNER JOIN item_type_map ON item_type_map.item_id = order_line.item_id 
INNER JOIN item_type ON item_type.id = order_line.item_id 
INNER JOIN international_description 
               ON international_description.foreign_id = order_line.item_id 
WHERE item_type_map.type_id IN (101, 300) 
GROUP BY order_line.item_id;
我已经尝试解决这个问题将近两天了,真的很期待得到一些指导

我的表中的示例数据如下,我希望有3条记录响应上述查询,因为有3个项目属于101和300个项目类型。但事实上,我在回答中只得到了两个结果。请在下面找到附加的查询响应

order_line
----------------------------------------------
id  |  item_id  | amount     |    quantity      
----------------------------------------------
'900', '300', '150.0000000000', '1.0000000000'
'1000', '300', '122.0000000000', '1.0000000000'
'1004', '300', '1000.0000000000', '1.0000000000'
'901', '301', '200.0000000000', '1.0000000000'
'1001', '301', '150.0000000000', '1.0000000000'
'1101', '101', '100.0000000000', '1.0000000000'

item_type
----------------------------
id  | description
------------------------------
'101', 'Fees'
'300', 'Adjustments'

item_type_map
--------------------------
item_id | type_id
--------------------------
'101', '101'
'300', '300'
'301', '300'

international_description
-----------------------------
foreing_id  | content
-----------------------------
'101', 'NSF Fee'
'300', 'Adjust - Debit'
'301', 'Adjust - Credit' 
结果是:-

result
-----------------------------------------------------
category  | item_id  | content  |  amount  | quantity
-----------------------------------------------------
'Fees', '101', 'NSF Fee', '100.0000000000', '1.0000000000'
'Adjustments', '300', 'Adjust - Debit', '1272.0000000000', '3.0000000000'

项目类型
的联接具有错误的条件。将其更改为:

INNER JOIN item_type ON item_type.id = item_type_map.type_id

这是打字错误吗<代码>。在(101300)和group by…中,我的意思是在group by之前,这是一个打字错误。我刚刚更正了这个问题这只是一个建议,但是如果不简单地将主键字段命名为“id”,而是将它们命名为[tableName]id或[tableName]\u id,您可能会发现这样的问题更容易解决。请将所有
内部联接更改为
左联接
,然后查看是否得到任何结果集在(101300)中,“”是有效的,因为它们是作为参数传递给查询的2个item_类型ID。非常感谢你指出这一点。非常感谢阿米尔。就这样。