0

Customer_Machineテーブルにまだ含まれていないシリアル番号を取得したい。しかし、代わりに、行は交差乗算されています。これは私のコードです。

SELECT serial_number.serial_no 
FROM   product 
       INNER JOIN serial_number 
               ON product.productid = serial_number.productid 
       INNER JOIN customer_machine 
               ON NOT( customer_machine.serial_no = serial_number.serial_no ) 

助けてください?

4

4 に答える 4

1

これは行う必要があります:

SELECT serial_number.serial_no 
FROM   product P
INNER JOIN serial_number S
       ON P.productid = S.productid 
WHERE NOT EXISTS (SELECT 1 FROM customer_machine 
                  WHERE serial_no = S.serial_no)

あなたが今していることは、からの同じ番号と一致しないcustomer_machineすべてのserial_noから に参加することです。だからあなたはあなたの結果を掛けています。serial_numbercustomer_machine

于 2013-03-13T18:38:16.667 に答える
1

Productserial_numberテーブルを結合すると、結果はになりますserial numbers which are in products but not in customer_machine。上記の回答はその場合を処理するので、このクエリはserial numbers which are not in customer_machine(あなたが説明したように)テーブルleft joinを無視して選択することです。Product

SQL-Serverフィドルデモ

select s.serial_no
from serial_number s 
    left join customer_machine c on s.serial_no = c.serial_no
where c.serial_no is null
于 2013-03-13T18:46:05.590 に答える
0
SELECT serial_number.serial_no 
FROM   product
       INNER JOIN serial_number 
               ON product.productid = serial_number.productid 
       LEFT JOIN customer_machine 
               ON ( customer_machine.serial_no = serial_number.serial_no)
 WHERE customer_machine.serial_no IS NULL
于 2013-03-13T18:40:19.920 に答える
0

おそらく、既存の特定のシリアル番号を結合するのではなく、除外したいだけです。これは、where句で行うことができます。

SELECT serial_number.serial_no 
FROM   product 
INNER JOIN serial_number 
           ON product.productid = serial_number.productid 
WHERE serial_number.serial_no NOT IN ( SELECT customer_machine.serial_no
                                       FROM customer_machine )
于 2013-03-13T18:41:07.437 に答える