обичам да получа серийните номера, които все още не са включени в таблицата 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 )
всяка помощ моля?
Отговори:
1 за отговор № 1ако се присъедините Product
и serial_number
таблици, резултатите ще бъдат serial numbers which are in products but not in customer_machine
, Тъй като горните отговори обработват този случай, тази заявка трябва да бъде избрана serial numbers which are not in customer_machine
(както сте описали) с помощта на left join
и игнорирайки Product
таблица.
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
1 за отговор № 2
Това трябва да направите:
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_number
който не съвпада със същия номер от customer_machine
; така че умножавате резултатите си.
0 за отговор № 3
Вероятно просто искате да изключите конкретните серийни номера, които вече съществуват, вместо да се присъедините към тях. Можете да направите това във вашата клауза където:
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 )
0 за отговор № 4
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