2012-05-10 14 views
1

我對此使用了3個表格,Part,PartDrawing和ShopDrawing。基本上我想顯示所有零件都有現貨的所有ShopDrawings。然而,每個ShopDrawing有多個PartDrawings與它去,所以當我跑我的查詢是這樣的:試圖顯示記錄如果ALL記錄等於另一個表中的東西

SELECT DISTINCT ShopDrawing.DrawingNo FROM ShopDrawing, PartDrawing, Part 
WHERE ShopDrawing.DrawingNo = PartDrawing.DrawingNo 
AND PartDrawing.PartNo = Part.PartNo 
AND Part.InStock = 'YES'; 

它顯示每一個ShopDrawing因爲他們都至少有一個部分是股票。我只想讓它顯示ShopDrawings所需的所有零件庫存,而我不知道如何操作。

回答

1

嘗試評估由不Part.InStock = 'NO',而不是選擇數據和Part.InStock = 'YES'

SELECT 
    ShopDrawing.DrawingNo 
FROM 
    ShopDrawing WHERE ShopDrawing.DrawingNo NOT IN 
     (SELECT 
       PartDrawing.DrawingNo 
      FROM 
       PartDrawing LEFT JOIN Part ON PartDrawing.PartNo = Part.PartNo 
      WHERE 
       Part.InStock IS NULL 
      GROUP BY PartDrawing.DrawingNo 
      HAVING COUNT(*)>0) 
+0

我喜歡這個主意選擇數據,但我居然沒有不在股票任何部分......我補充說,列,當我試圖讓這個SQL工作,但它實際上沒有用。基本上,商店圖紙是由零件圖組成的。然後一部分是由零件圖製成的,所以基本上我想選擇所有與其一起繪製的零件圖都是零件的零件圖。 –

+0

在我的零件圖表中有一個partNo列,如果它有一個零件,那麼該零件有庫存,如果該零件圖紙的該列爲空白,那麼該零件尚未製造,我不想顯示即使其他零件圖紙也具有零件編號 –

+0

,因此,您可以將「PartDrawing」和「零件」連接在一起。如果'Part.InStock'爲null,則表示PartDrawing不在。 –

相關問題