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

सिद्धांत में कई-से-अनेक संबंध

यह संभव नहीं है क्योंकि आप उचित जॉइन नहीं कर सकते। इस मामले में शामिल होना parent_entity और child_entity में मान पर निर्भर करेगा (यानी प्रत्येक पंक्ति को किसी भिन्न तालिका में शामिल होने की आवश्यकता हो सकती है)। इसके अलावा, सिद्धांत को कैसे पता चलेगा कि किस रिकॉर्ड प्रकार को हाइड्रेट करना है (अर्थात क्योंकि यह इकाई प्रकार पर निर्भर है)।

आप अपने जॉइन पर WITH क्लॉज का उपयोग करके कुछ इस तरह से खींच सकते हैं (यद्यपि यह अजीब होगा)। उदाहरण के लिए, अपने समाचार मॉडल के सेटअप () पद्धति में आप यह कर सकते हैं:

$this->hasMany('Links as NewsVideoLinks', array('local' => 'id', 'foreign' => 'parent_id'));

और आपके लिंक मॉडल के सेटअप में:

$this->hasMany('Videos as videos', array('local' => 'child_id', 'foreign' => 'id'));

आपको लिंक्स मॉडल में जॉइन के सभी संयोजनों को परिभाषित करने की आवश्यकता होगी। मेरा मतलब यह है कि आपको यह बताना होगा कि इसमें चाइल्ड_आईडी और पैरेंट_आईडी दोनों का उपयोग करते हुए कई समाचार और एल्बम हैं।

और फिर अपनी क्वेरी में, आपको कुछ ऐसा करना होगा:

$query = Doctrine_Query::create();
$query->from('News n');
$query->innerJoin("n.NewsVideoLinks as links WITH parent_entity = 'news'");
$query->innerJoin("links.Videos as vids WITH child_entity = 'videos'");
$results = $query->execute();

जैसा कि आप देख सकते हैं कि यह बहुत बोझिल है। मैं प्रत्येक संबंध के लिए जॉइन टेबल बनाने की अत्यधिक अनुशंसा करता हूं। प्रत्येक जॉइन टेबल से जुड़कर आप अभी भी वह प्राप्त कर सकते हैं जिसकी आप तलाश कर रहे हैं।



  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. जावा या MySQL में पासवर्ड का एन्क्रिप्शन?

  3. mysql संग्रहीत कार्यविधि त्रुटि (1172, 'परिणाम में एक से अधिक पंक्तियाँ शामिल हैं')

  4. मैसकल डेटिफ क्वेरी

  5. दैनिक राजस्व हिस्सेदारी के आधार पर देशों के लिए निर्धारित मूल्य विभाजित करें