2012-08-22 14 views
7

मैं टेबल इतना तरह की स्थापना की है:,माता पिता का चयन

Parent 
------ 
id, ... 

Child 
----- 
id, parent_id, x, y 

मैं माता पिता, या अलग PARENT_ID (रों) खोजना चाहते हैं बाल की सभी पंक्तियां युक्त एक दिया गया parent_id x और y (मेरे मामले x = y) में शामिल मानदंडों को पूरा करता है।

उदाहरण के लिए:

Parent 
------ 
id 
1 
2 
3 

Child 
id, parent_id, x, y 
1,  1,  2, 3 
2,  1,  3, 4 
3,  2,  5, 5 
4,  2,  6, 7 
5,  3,  8, 8 
6,  3,  9, 9 

3. में परिणाम होगा वर्तमान में, मुझे लगता है कि parent_ids कि बच्चों में से किसी मानदंडों को पूरा पाता है एक प्रश्न है। मैं फिर उन रिकॉर्ड्स को पुनर्प्राप्त करने के लिए इसका उपयोग करता हूं और यदि सभी बच्चे मानदंडों को पूरा करते हैं तो उन्हें कोड में जांचें। उदाहरण डेटा के साथ, मुझे parent_id 2 और 3 मिलता है, सभी बच्चों के साथ दो अभिभावक रिकॉर्ड प्राप्त करें, और मूल्यांकन करें। यदि संभव हो, तो मैं इसे एक प्रश्न के साथ करना चाहता हूं।

+0

आप कृपया बता सकते हैं उर उम्मीद उत्पादन क्या है के लिए सूचकांक जोड़ना चाहिए नहीं है? – AnandPhadke

+0

@AnandPadke, मेरा अनुमानित आउटपुट 3. – CheeZe5

+0

कौन सा डीबीएमएस आप उपयोग कर रहे हैं? PostgreSQL? आकाशवाणी? डीबी 2? –

उत्तर

18

आप उपयोग कर सकते हैं NOT EXISTS

SELECT id 
FROM Parent p 
WHERE NOT EXISTS 
(
    SELECT 1 FROM Child c 
    WHERE c.parent_Id = p.id 
    AND c.x <> c.y 
) 

संपादित करें: http://sqlfiddle.com/#!3/20128/1/0

+9

+1 ... कभी नहीं पता था कि अस्तित्व में था ... बहुत आसान। – Webjedi

+0

मेरे पास एक समान मामला था, मुझे सभी माता-पिता की आवश्यकता थी, लेकिन एक कॉलम शो में जो बच्चों में मानदंडों को पूरा करता था। मैं एक वाम का उपयोग JOIN ( जहां मौजूद नहीं है ( p2 माता पिता से एक के रूप में चयन 1, p2.id चयन 1 बच्चा c2 कहां c2.parent_Id = p2.id और c2.test = 'एफ' ) और से EXISTS ( चाइल्ड सी 2 से चुनें 1 कहां c2.parent_Id = p2.id और c2.test = 't' ) ) cOK.id = p.id पर cok –

1

यह तुम क्या जरूरत है: यहाँ एसक्यूएल-बेला है?

select id from parent where id not in(
    select parent_id from chile 
    where x<>y 
    group by parent_id) 
0

पहले 2 टेबल में शामिल होने चाहिए क्योंकि माता-पिता बच्चों कि

को पूरा करेगा और pa_id स्तंभ

SELECT DISTINCT pa.id 
FROM pa INNER JOIN c ON c.pa_id = pa.id 
WHERE NOT EXISTS (SELECT 1 FROM c WHERE c.parent_Id = p.id and c.x <> c.y) 
संबंधित मुद्दे