मैं वास्तव में टेबल पर एक SQL क्वेरी के साथ कुछ मदद की सराहना करता हूं। मुझे एहसास है कि इस तरह की चीज लगातार पूछी जाती है, लेकिन मुझे जवाबों को समझने के लिए एक समान सवाल नहीं मिल रहा है।एसक्यूएल: किसी तालिका मिलान मानदंड से दूसरे में चुनें?
मैं table_A
से पंक्तियों का चयन करना चाहता हूं जिनके पास table_B
में संबंधित टैग है।
तो, उदाहरण के लिए, "table_a
से पंक्तियों का चयन करें जिन्हें 'कुर्सी' टैग किया गया है table_C
लौटाएगा।
इसके अलावा, id
table_a
में अद्वितीय है, और table_b
में नहीं है।
table_A: table_B: table_C:
id object id tag id object
1 lamp 1 furniture 3 stool
2 table 2 furniture 4 bench
3 stool 3 furniture
4 bench 4 furniture
4 chair
3 chair
वैकल्पिक रूप से, डेटा व्यवस्थित करने का एक बेहतर तरीका है?
select
A.*
from
table_A A
where
A.id in (
select B.id from table_B B where B.tag = 'chair'
)
वैकल्पिक रूप से आप टेबल शामिल हो सकते हैं और पंक्तियों आप चाहते हैं को फ़िल्टर:
select
A.*
from
table_A A
inner join table_B B
on A.id = B.id
where
B.tag = 'chair'
आप दोनों प्रोफ़ाइल चाहिए और
@ rjschnorenberg का सुझाव बेहतर है यदि आपके पास स्कीमा बदलने की लक्जरी है। इस मामले में आप तीन टेबल आइटम आइटम <> आइटम_Tags <> टैग में शामिल होंगे, जिसमें दो इनर जॉइन क्लॉज का उपयोग किया जाता है। –
ग्रेट, यह बहुत उपयोगी है। मुझे पता नहीं था कि आप उस तरह की तालिका से कॉलम फ़िल्टर कर सकते हैं। –
दरअसल आप एआईडी = बीआईडी और बीटीएजी = 'कुर्सी' पर "आंतरिक शामिल टेबल_B बी" के रूप में जुड़ने वाली लाइन भी लिख सकते हैं, लेकिन मैं कहां फ़िल्टर करता हूं। –