/ / Requêtes de multiplication croisée - sql

Interrogations croisées - sql

J'aime obtenir les numéros de série qui ne sont pas encore inclus dans la table Customer_Machine. mais à la place, les lignes se multiplient. c'est mon code

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 )

toute aide s'il vous plaît?

Réponses:

1 pour la réponse № 1

si vous vous inscrivez Product et serial_number tableaux, les résultats seront serial numbers which are in products but not in customer_machine. Comme les réponses ci-dessus traitent ce cas, cette requête consiste à sélectionner serial numbers which are not in customer_machine (comme vous l'avez décrit) en utilisant un left join et en ignorant Product table.

Sql-Server démo de violon

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 pour la réponse № 2

Cela devrait faire:

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)

Qu'est-ce que vous faites maintenant, se joint à la customer_machine pour chaque serial_no de serial_number qui ne correspond pas au même numéro de customer_machine; donc vous multipliez vos résultats.


0 pour la réponse № 3

Vous voulez probablement simplement exclure les numéros de série spécifiques qui existent déjà, plutôt que de les joindre. Vous pouvez le faire dans votre clause 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 )

0 pour la réponse № 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