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

MySQL अभिभावक बच्चे एक क्वेरी चयन

आपको एक रिकर्सिव जॉइन की आवश्यकता है जो MySQL समर्थन नहीं करता है। केवल एक चीज जो आप कर सकते हैं वह है गहराई का अधिकतम स्तर निर्धारित करना (मैं आपके मामले में यह 1 क्योंकि आपके पास p->c है) और इसके साथ आप आवश्यक जुड़ने की संख्या निर्धारित कर सकते हैं:

अधिकतम स्तर की गहराई =स्वयं-जुड़ने की संख्या :

SELECT
    p.id as parent_id,
    p.name as parent_id,
    c1.id as child_id,
    c1.name as child_name
FROM 
    my_table p
LEFT JOIN my_table c1
    ON c1.parent = p.id
WHERE
    p.parent=0

उदाहरण के लिए यदि आपकी गहराई का अधिकतम स्तर 3 था तो आपको 3 सेल्फ-जॉइन की आवश्यकता होगी:

SELECT
    p.id as parent_id,
    p.name as parent_id,
    c1.id as child_id_1,
    c1.name as child_name_1,
    c2.id as child_id_2,
    c2.name as child_name_2,
    c3.id as child_id_3,
    c3.name as child_name_3
FROM 
    my_table p
LEFT JOIN my_table c1
    ON c1.parent = p.id
LEFT JOIN my_table c2
    ON c2.parent = c1.id
LEFT JOIN my_table c3
    ON c3.parent = c2.id
WHERE
    p.parent=0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL डेटाबेस में यादृच्छिक वर्ण सम्मिलित करना

  2. डेटाबेस में वगैरह जैसे सिंबल होते हैं, क्या करें?

  3. java.sql.SQLException:परिणाम के अंत के बाद mysql में सेट करें

  4. सेलेक्ट स्टेटमेंट में सबक्वेरी (MySQL)

  5. MySqlDb थ्रो ऑपरेंड में इन्सर्ट इग्नोर स्टेटमेंट पर 1 कॉलम होना चाहिए