मैं एक ठोस, लेकिन काल्पनिक का उपयोग करूँगा।
प्रत्येक आदेश में आम तौर पर केवल एक पंक्ति वस्तु होती है :
आदेश:
OrderGUID OrderNumber
========= ============
{FFB2...} STL-7442-1
{3EC6...} MPT-9931-8A
लाइन आइटम:
LineItemGUID Order ID Quantity Description
============ ======== ======== =================================
{098FBE3...} 1 7 prefabulated amulite
{1609B09...} 2 32 spurving bearing
लेकिन कभी-कभी दो लाइन आइटम के साथ एक आदेश होगा:
LineItemID Order ID Quantity Description
========== ======== ======== =================================
{A58A1...} 6,784,329 5 pentametric fan
{0E9BC...} 6,784,329 5 differential girdlespring
आम तौर पर उपयोगकर्ता को आदेश दिखाते समय:
SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM Orders
INNER JOIN LineItems
ON Orders.OrderID = LineItems.OrderID
मैं आदेश पर एकल आइटम दिखाना चाहता हूं। लेकिन इस सामयिक आदेश दो आइटम वाले (या अधिक) के साथ, आदेश होता दिखाई जा दोहराया गया :
OrderNumber Quantity Description
=========== ======== ====================
STL-7442-1 7 prefabulated amulite
MPT-9931-8A 32 spurving bearing
KSG-0619-81 5 panametric fan
KSG-0619-81 5 differential girdlespring
क्या मैं वास्तव में चाहता हूँ कि SQL सर्वर सिर्फ एक है , क्योंकि यह काफी अच्छा होगा :
OrderNumber Quantity Description
=========== ======== ====================
STL-7442-1 7 prefabulated amulite
MPT-9931-8A 32 differential girdlespring
KSG-0619-81 5 panametric fan
यदि मुझे रोमांच मिलता है, तो मैं उपयोगकर्ता को यह दिखाने के लिए एक दीर्घवृत्त दिखा सकता हूं कि एक से अधिक हैं:
OrderNumber Quantity Description
=========== ======== ====================
STL-7442-1 7 prefabulated amulite
MPT-9931-8A 32 differential girdlespring
KSG-0619-81 5 panametric fan, ...
तो सवाल यह है कि या तो कैसे करें
- "डुप्लिकेट" पंक्तियों को समाप्त करें
- केवल एक पंक्ति में शामिल हों, दोहराव से बचने के लिए
पहला प्रयास
मेरा पहला भोला प्रयास केवल " TOP 1 " पंक्ति वस्तुओं में शामिल होना था:
SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM Orders
INNER JOIN (
SELECT TOP 1 LineItems.Quantity, LineItems.Description
FROM LineItems
WHERE LineItems.OrderID = Orders.OrderID) LineItems2
ON 1=1
लेकिन यह त्रुटि देता है:
स्तंभ या उपसर्ग 'आदेश' क्वेरी में प्रयुक्त
तालिका नाम या उपनाम नाम से मेल नहीं खाता
।
संभवत: क्योंकि आंतरिक चयन बाहरी तालिका नहीं देखता है।
group by
अन्य सभी स्तंभों को सूचीबद्ध करने की आवश्यकता होगी, जहां आपको डुप्लिकेट नहीं चाहिए। स्रोत
group by
?