आइए कल्पना करें कि मेरे पास एक टेबल ए है जिसमें पंक्तियां एक्स, वाई और जेड हैं, और मेरे पास एक और टेबल है जो ए से दूसरी टेबल बी में तत्वों से संबंधित है।

- A)
ID | name
01 | X
02 | Y
03 | Z

- B)
ID | name
01 | b


- A_B)
ID | A_ID | B_ID
01 | 01 | 01



ए_बी: एलिमेंट_ए, एलिमेंट_बी, और मैं एक क्वेरी चाहता हूं कि बी में तत्व बी के लिए सभी तत्वों के लिए रिटर्न ए रिटर्न में सही है अगर {ए, बी} तालिका ए_बी में मौजूद है और गलत नहीं है तो

Result of b in B
 A.name | Value
 X      | True
 Y      | False
 Z      | False

OR 
 A.name | B.ID
 X      | 01
 Y      | null
 Z      | NULL


और यही मैंने अभी तक कोशिश की है।

SELECT *
from A
         LEFT JOIN A_B ei ON A.id = A_B.a_id

-1
hamza sadiqi 10 सितंबर 2020, 18:22

1 उत्तर

सबसे बढ़िया उत्तर

आप सभी संभावित संयोजनों को उत्पन्न करने के लिए cross join टेबल a और b कर सकते हैं, फिर ब्रिज टेबल a_b को left join के साथ ला सकते हैं:

select a.name, (ab.id is not null) as is_in_ab
from a
cross join b
left join a_b ab on ab.a_id = a.id and ab.b_id = b.id
where b.name = 'b'

आप exists और एक सहसंबद्ध उपश्रेणी का भी उपयोग कर सकते हैं:

select 
    a.name, 
    exists (select 1 from a_b ab where  ab.a_id = a.id and ab.b_id = b.id) as is_in_ab
from a
cross join b
where b.name = '2'
1
GMB 10 सितंबर 2020, 15:26