/ / Quer multiplizierende Abfragen - SQL

Quer multiplizierende Abfragen - sql

Ich möchte die Seriennummern erhalten, die noch nicht in der Tabelle Customer_Machine enthalten sind. Stattdessen multiplizieren sich die Zeilen. Das ist mein 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 )

Irgendwelche Hilfe bitte?

Antworten:

1 für die Antwort № 1

wenn du beitrittst Product und serial_number Tabellen, Ergebnisse werden sein serial numbers which are in products but not in customer_machine. Da obige Antworten diesen Fall behandeln, soll diese Abfrage ausgewählt werden serial numbers which are not in customer_machine (wie Sie beschrieben haben) mit a left join und Ignorieren Product Tabelle.

Sql-Server Geige Demo

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 für die Antwort № 2

Dies sollte tun:

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)

Was du jetzt tust, schließt sich dem an customer_machine für jeden serial_no von serial_number das stimmt nicht mit der gleichen Zahl überein customer_machine; Sie multiplizieren Ihre Ergebnisse.


0 für die Antwort № 3

Wahrscheinlich möchten Sie nur die spezifischen Seriennummern ausschließen, die bereits existieren, anstatt sie einzubinden. Sie können dies in Ihrer where-Klausel tun:

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 für die Antwort № 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