材料表:
**ID_Material(PK)** **Material_Name** **Type**
DXTR1000 Deluxe Touring Bike Finished Good
CHAN1000 Chain Raw
BOLT3000 Socked Bolt Raw
TRTR1000 Touring Tire Semi Finished
Detail_Material Table
**ID_Material (PK,FK)** **ID_Material_MadeOf (PK,FK)** **Qty**
DXTR1000 CHAN1000 1
DXTR1000 TRTR1000 5
DXTR1000 BOLT1000 2
我希望查询输出显示制作成品所需的材料列表。
我提出了这个问题:
SELECT *
FROM material m
INNER JOIN detail_material d ON (m.id_material = d.id_material)
WHERE m.id_material IN (
SELECT id_material_madeof
FROM detail_material
WHERE id_material = 'DXTR1000'
);
它什么都不返回
答案 0 :(得分:1)
只需运行部分查询,您就会看到问题所在。这个查询:
select *
from material m join
detail_material d
on m.id_material = d.id_material
将返回此行三次,第二次表中的每一行返回一次:</ p>
DXTR1000 Deluxe Touring Bike Finished Good
m.id_material
的值为DXTR1000
。我在ID_Material_MadeOf
列中的任何位置都看不到该值。没有匹配,因此没有行。
显然,此查询无法执行您想要的操作。使用示例数据和所需结果询问另一个问题,也许有人可以帮助您解决实际问题。编辑此问题对于回答并评论问题原始版本的人来说是不礼貌的。
答案 1 :(得分:0)
如果您想知道构建DXTR1000需要哪些材料,那么此查询将执行:
SELECT m.ID_Material, m.Material_Name, m.[Type]
FROM Detail_Material dm
INNER JOIN Material m ON dm.ID_Material_MadeOf = m.ID_Material
WHERE dm.ID_Material = 'DXTR1000'
您的查询没有返回任何内容,因为您的查询显示&#34;给我所有需要DXTR1000构建的材料&#34; ==&GT;没有!