-3

productID を主キーとする product というテーブルがあります。次に、productID と processID を格納する productProcess というテーブルがあります。そのため、productProcess テーブルにインスタンスがないすべての productID を検索する必要があります。現在、2 つのクエリを最初にすべての製品を実行し、2 つ目は productProcess からの productID であり、存在しないものが選択されています。これには他のメカニズムがありますか?

4

3 に答える 3

2

はいあります。使用するLEFT JOIN

SELECT  a.*      // this will get all columns from product table.
FROM    product a
        LEFT JOIN productProcess b
            ON a.productID = b.productID
WHERE   b.productID IS NULL

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

より速くするためのもう1つのヒントはproductID、テーブルproductProcessの外部キーを設定することです。

于 2013-03-10T16:59:42.263 に答える
2

product.productIDを NULL にすることはできないと仮定します。

SELECT product.productID 
FROM product
LEFT JOIN productProcess
ON productProcess.productID = product.productID
WHERE productProcess.productID IS NULL

別のオプションはWHERE NOT EXIST次のとおりです。

SELECT product.productID
FROM product
WHERE NOT EXISTS (
  SELECT productID FROM productProcess
  WHERE productProcess.productID = product.productId
)
于 2013-03-10T17:00:06.410 に答える
1

左結合を使用できます。左結合を使用できる場合、結果は、products および ProductsProcess に関連するすべての製品になります。

SELECT  p.* 
FROM    (product p LEFT JOIN productProcess pp ON a.productID = b.productID)
WHERE   pp.productID IS NULL
于 2013-03-10T17:03:39.937 に答える