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

केवल गहराई वाले बच्चे के नोड्स का पहला स्तर कैसे प्राप्त करें?

यहाँ एक समाधान है:

select p1.* from tree_path as p1
left outer join (tree_path as p2 join tree_path as p3 on p2.children = p3.parent)
 on p2.parent = p1.parent 
 and p3.children = p1.children 
 and p2.parent <> p2.children 
 and p3.parent <> p3.children
where p1.parent = 3 and p2.parent is NULL;
+----------+--------+
| children | parent |
+----------+--------+
|        3 |      3 |
|        7 |      3 |
|        8 |      3 |
+----------+--------+

p1.parent=7 बदलें और आपको यह आउटपुट मिलेगा:

+----------+--------+
| children | parent |
+----------+--------+
|        7 |      7 |
|       15 |      7 |
|       16 |      7 |
+----------+--------+

यह जिस तरह से काम करता है:तत्काल बच्चे वंशज होते हैं जहां माता-पिता से बच्चे तक का रास्ता होता है, लेकिन माता-पिता से तीसरे नोड के माध्यम से बच्चे तक कोई रास्ता नहीं होता है। इसलिए हम ऐसे पथ (p2->p3) से जुड़ने का प्रयास करते हैं और यदि कोई नहीं मिलता है, तो p2 और p3 के सभी कॉलम NULL होंगे।




  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. दूसरे क्षेत्र की तरह MySQL

  3. MySQL डेटाबेस से पेजिनेशन वार एन रिकॉर्ड्स का चयन कैसे करें?

  4. php . में उपयोगकर्ता नाम या ईमेल पते के साथ लॉगिन करें

  5. पुरातन वर्तनी के लिए अन्य प्रश्नों का सुझाव देना (उदाहरण के लिए Google का क्या आपका मतलब है)