में दाएं जुड़ने जैसे बाएं जुड़ने का उपयोग कैसे करें, इसलिए मैं थोड़ी देर के लिए अपने दिमाग को रैक कर रहा हूं। सिद्धांत में सही शामिल होने की कोई अवधारणा नहीं है। मुझे पता है कि आप बाएं शामिल होने जैसे बाएं शामिल होने का उपयोग कर सकते हैं लेकिन मैं इसे अपने उदाहरण के लिए नहीं समझ सकता, इसलिए मैं यहां हूं।डॉक्टरेट
मेरा उदाहरण: मेरे पास सिद्धांत में एक इकाई है जिसका एक-से-एक संबंध है जिसे "पैरेंट" कहा जाता है। मैं सभी संस्थाओं और उनके बच्चों को प्राप्त करने की कोशिश कर रहा हूं (यदि वे मौजूद हैं) बिना डुप्लिकेट के।
एक सही साथमें शामिल होने के लिए इस कारण मैं कह सकता हूँ सरल है:
SELECT parent.*, child.*
FROM table child
RIGHT JOIN table parent ON parent.id = child.parent_id
WHERE parent.parent_id is null;
लेकिन एक छोड़ दिया उपयोग करके शामिल मैं लौट आए परिणाम है कि मैं समझ नहीं क्या जहां खंड होना चाहिए उन्हें बाहर फिल्टर करने के लिए कर रहा हूँ।
तो मेरा सवाल यह है कि "क्या सिद्धांत में सही शामिल होने का कोई तरीका है" या "मैं बाएं जॉइन ऑपरेशन का उपयोग कैसे कर सकता हूं जैसे सही जुड़ाव"?
--- संपादित करें ---
तुम लोग आप टेबल मैं से चयन के आदेश को बदलने के बारे में क्या कह रहे हैं सही कर रहे हैं, लेकिन मैं सिद्धांत का उपयोग कर रहा है ताकि संबंध बच्चे के> माता पिता है।
मेरे निकाय::
/**
* @Entity
* @Table(name="entity")
*/
class Entity
{
...
/**
* @OneToOne(
* targetEntity="Entity",
* fetch="EAGER"
*)
* @JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
...
}
मेरे सिद्धांत का चयन बयान:
$em->createQueryBuilder()
->select(array('child', 'parent'))
->from('Entity', 'child')
->leftjoin('child.parent', 'parent')
->orderBy('parent.id','asc')
->getQuery()
->execute();
मुझे यकीन है कि कैसे और अगर मैं तालिकाओं के आदेश स्विच कर सकते हैं नहीं कर रहा हूँ यहाँ मेरी सिद्धांत क्वेरी है। मैंने इकाई से खुद से एक और रिश्ते बनाने की कोशिश की (जैसे मैंने माता-पिता किया) लेकिन इसे बच्चा कहा जाता है। लेकिन जब मैंने नए स्कीमा सिद्धांत के साथ डीबी को अद्यतन किया तो त्रुटियों को फेंक दिया।
कोई विचार? और त्वरित प्रतिक्रियाओं के लिए धन्यवाद!
--- संपादित 2 ---
वाम में शामिल होने एसक्यूएल और परिणाम:
SELECT child.id, child.changed_timestamp, child.parent_entity_id, parent.id,
parent.changed_timestamp, parent.parent_entity_id
FROM content child
LEFT JOIN content parent ON child.parent_entity_id = parent.id
ORDER BY parent.id ASC
child_id child_timestamp parent_entity_id parent_id parent_timestamp parent_entity_id
1 8/16/12 20:29 NULL NULL NULL NULL
7 9/20/12 16:07 NULL NULL NULL NULL
8 8/17/12 16:08 NULL NULL NULL NULL
9 8/17/12 20:44 NULL NULL NULL NULL
10 8/17/12 21:03 NULL NULL NULL NULL
11 8/17/12 21:17 NULL NULL NULL NULL
194 9/19/12 9:58 NULL NULL NULL NULL
195 9/20/12 10:38 NULL NULL NULL NULL
196 9/19/12 11:58 NULL NULL NULL NULL
197 NULL 196 196 9/19/12 11:58 NULL
200 9/20/12 16:02 1 1 8/16/12 20:29 NULL
202 9/20/12 16:35 NULL NULL NULL NULL
204 9/21/12 8:41 NULL NULL NULL NULL
206 NULL 204 204 9/21/12 8:41 NULL
परिणाम सही में शामिल होने:
SELECT child.id, child.changed_timestamp, child.parent_entity_id, parent.id,
parent.changed_timestamp, parent.parent_entity_id
FROM content child
RIGHT JOIN content parent ON child.parent_entity_id = parent.id
WHERE parent.parent_entity_id is null
ORDER BY parent.id ASC
child_id child_timestamp parent_entity_id parent_id parent_timestamp parent_entity_id
200 9/20/12 16:02 1 1 8/16/12 20:29 NULL
NULL NULL NULL 7 9/20/12 16:07 NULL
NULL NULL NULL 8 8/17/12 16:08 NULL
NULL NULL NULL 9 8/17/12 20:44 NULL
NULL NULL NULL 10 8/17/12 21:03 NULL
NULL NULL NULL 11 8/17/12 21:17 NULL
NULL NULL NULL 194 9/19/12 9:58 NULL
NULL NULL NULL 195 9/20/12 10:38 NULL
197 NULL 196 196 9/19/12 11:58 NULL
NULL NULL NULL 202 9/20/12 16:35 NULL
206 NULL 204 204 9/21/12 8:41 NULL
मैं सही शामिल होने के साथ परिणाम प्राप्त करना चाहते हैं एसक्यूएल। अपने संबंधित बच्चों के साथ अद्वितीय माता-पिता संस्थाएं (यदि वे मौजूद हैं) लेकिन मुझे सिद्धांत का उपयोग करके इसे हासिल करने की आवश्यकता है। एक बार फिर धन्यवाद!
'बच्चे का अधिकार तालिका अभिभावक पर parent.id = child.parent_id'' tableparent LEFT जॉइन बच्चे के समान है parent.id = child.parent_id' –
कृपया नमूना डेटा और वांछित आउटपुट प्रदान करें। – RedFilter
जोड़ा गया :) धन्यवाद! –