1

これには、Part、PartDrawing、ShopDrawing の 3 つのテーブルを使用しています。基本的に、すべての部品が在庫にあるすべての ShopDrawings を表示したいと考えています。ただし、各 ShopDrawing には複数の PartDrawings があるため、クエリを次のように実行すると、次のようになります。

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

ShopDrawing には少なくとも 1 つの部品が在庫にあるため、すべての ShopDrawing が表示されます。必要なすべてのパーツの在庫がある ShopDrawings を表示したいだけですが、これを行う方法がわかりません。

4

1 に答える 1

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)
于 2012-05-10T06:35:40.983 に答える