SQL Query返回0行

时间:2015-06-11 14:44:04

标签: sql

材料表:

**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'
        );

它什么都不返回

2 个答案:

答案 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;没有!