SQL 2005:
मैं एक बाहरी जुड़ाव बनाने की कोशिश कर रहा हूंदो अलग-अलग डेटाबेस से रिकॉर्ड खींचें। मेरा उद्देश्य यह निर्धारित करना है कि डेटाबेस B में कौन से रिकॉर्ड्स नहीं हैं। डेटाबेस में मिलान रिकॉर्ड्स हैं। जब मैंने क्वेरी चलाने की कोशिश की, तो यह नीचे की त्रुटि है। मुझे यकीन नहीं है कि इस त्रुटि के आसपास कैसे प्राप्त करें:
"तालिकाएँ या कार्य"AssetCompType_EampleProperty_LinkTable" और "TA-Reporting.dbo.AssetCompType_EampleProperty_LinkTable" में समान नाम हैं। उन्हें अलग करने के लिए सहसंबंध नामों का उपयोग करें। ”
select *
from AssetCompType_EquipmentProperty_LinkTable
right outer join [database A].dbo.AssetCompType_EquipmentProperty_LinkTable on
[database A].dbo.AssetCompType_EquipmentProperty_LinkTable.AssetCompTypeID=
[database B].dbo.AssetCompType_EquipmentProperty_LinkTable.AssetCompTypeID
उत्तर:
जवाब के लिए 2 № 1ऐसा प्रतीत होता है कि आपको तालिकाओं में अंतर करना चाहिए। इसके साथ प्रयास करें:
select *
from AssetCompType_EquipmentProperty_LinkTable T1
right outer join
[database A].dbo.AssetCompType_EquipmentProperty_LinkTable T2
on T1.AssetCompTypeID = T2.AssetCompTypeID
उत्तर № 2 के लिए 1
बस उपनाम असाइन करें:
select *
from AssetCompType_EquipmentProperty_LinkTable tbl_thisDB
right outer join [database A].dbo.AssetCompType_EquipmentProperty_LinkTable tbl_A on
tbl_A.AssetCompTypeID=
tbl_thisDB.AssetCompTypeID
उत्तर № 3 के लिए 1
यदि समान नाम के साथ तालिकाओं को जोड़ने पर आपको टेबल उपनामों का उपयोग करने की आवश्यकता है, यदि स्वयं नहीं:
SELECT a.*, b.*
FROM AssetCompType_EquipmentProperty_LinkTable a
RIGHT OUTER JOIN [database A].dbo.AssetCompType_EquipmentProperty_LinkTable b ON a.AssetCompTypeID = b.AssetCompTypeID
यह अकेले जॉय सिंटैक्स के लिए आवश्यक है, लेकिन इसके अतिरिक्त क्योंकि आप "टी उपयोग" कर सकते हैं SELECT *
तालिकाओं में भी समान कॉलम की संभावना के कारण।
कहा कि - अपनी इच्छा के अनुसार परिणाम प्राप्त करने के लिए, आपको विचार करना चाहिए:
का उपयोग करते हुए NOT IN
SELECT b.*
FROM [database A].dbo.AssetCompType_EquipmentProperty_LinkTable b
WHERE b.AssetCompTypeID NOT IN (SELECT a.AssetCompTypeID
FROM AssetCompType_EquipmentProperty_LinkTable a)
का उपयोग करते हुए NOT EXISTS
SELECT b.*
FROM [database A].dbo.AssetCompType_EquipmentProperty_LinkTable b
WHERE NOT EXISTS (SELECT NULL
FROM AssetCompType_EquipmentProperty_LinkTable a
WHERE a.AssetCompTypeID = b.AssetCompTypeID)
का उपयोग करते हुए LEFT JOIN/IS NULL
SELECT b.*
FROM [database A].dbo.AssetCompType_EquipmentProperty_LinkTable b
LEFT JOIN AssetCompType_EquipmentProperty_LinkTable a ON a.AssetCompTypeID = b.AssetCompTypeID
WHERE a.AssetCompTypeID IS NULL
निष्कर्ष
तीन विकल्पों में से, NOT IN
तथा NOT EXISTS
समतुल्य हैं - LEFT JOIN / IS NULL कम कुशल है। देख यह लेख अधिक जानकारी के लिए।