/ / क्रॉस-गुणात्मक क्वेरीज़ - एसक्यूएल

क्रॉस-गुणात्मक क्वेरीज़ - एसक्यूएल

मुझे सीरियल नंबर प्राप्त करना पसंद है जो अभी तक ग्राहक_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

उत्तर № 2 के लिए 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_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