/ / दो बाहरी डेटाबेस से मिलान रिकॉर्ड में शामिल होने के लिए एक सही बाहरी का उपयोग करना - sql, sql-server, sql-server-2005, में शामिल हों

एक सही बाहरी का उपयोग दो अलग-अलग डेटाबेस से रिकॉर्ड्स मिलान करने के लिए जुड़ें - एसक्यूएल, एसक्यूएल-सर्वर, एसक्यूएल-सर्वर-2005, शामिल हों

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 कम कुशल है। देख यह लेख अधिक जानकारी के लिए।