Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर:प्रथम, द्वितीय और तृतीय डिग्री संपर्कों का चयन कैसे करें

आप EXCEPT . का उपयोग कर सकते हैं ऑपरेटर।

प्रथम श्रेणी के संपर्क:

SELECT contact_2 FROM contact WHERE contact_1 = 'gulsah'

दूसरे दर्जे के संपर्क जो पहले दर्जे के संपर्क नहीं हैं:

SELECT
  contactB.contact_2
FROM 
  contact AS contactB
  INNER JOIN contact AS contactA ON contactA.contact_2=contactB.contact_1
WHERE contactA.contact_1 = 'gulsah'
EXCEPT
SELECT contact_2 FROM contact WHERE contact_1 = 'gulsah'

EXCEPT SQL सर्वर को पहले SELECT . से सभी परिणाम वापस करने के लिए कहता है जो दूसरे SELECT . में दिखाई नहीं देते ।

थर्ड-डिग्री कॉन्टैक्ट्स के लिए (जो फर्स्ट- या सेकेंड-डिग्री कॉन्टैक्ट नहीं हैं):

SELECT
  contactC.contact_2
FROM 
  contact AS contactC
  INNER JOIN contact AS contactB ON contactB.contact_2=contactC.contact_1
  INNER JOIN contact AS contactA ON contactA.contact_2=contactB.contact_1
WHERE contactA.contact_1 = 'gulsah'
EXCEPT
(
SELECT contact_2 FROM contact WHERE contact_1 = 'gulsah'
UNION
SELECT
  contactB.contact_2
FROM 
  contact AS contactB
  INNER JOIN contact AS contactA ON contactA.contact_2=contactB.contact_1
WHERE contactA.contact_1 = 'gulsah'
)

मुझे प्रदर्शन के लिए उच्च उम्मीदें नहीं हैं, लेकिन निश्चित रूप से आपको इसे स्वयं जांचना होगा।

एक साइड नोट के रूप में:

I can select mutual contacts but I guess it is not the right approach.

INTERSECT का उपयोग करें इसके लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डीबी में डेटा सहेजें

  2. SQL सर्वर (T-SQL उदाहरण) में 'datetime2' को 'datetime' में बदलें

  3. नौकरी से निष्पादित sp_send_dbmail फ़ाइल के रूप में संलग्न क्वेरी परिणाम के साथ विफल रहता है

  4. कई कॉलम से न्यूनतम मान चुनने का सबसे अच्छा तरीका क्या है?

  5. मैं SQL सर्वर क्वेरी में सप्ताहांत के दिनों को कैसे निकालूँ?