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

बच्चों और माता-पिता को चुनें और सूचीबद्ध करें

इस पहेली को आजमाएं http://sqlfiddle.com/#!2/0a9c5/16 , sql कोड नीचे

SELECT c.rule_id, c.rule_title, GROUP_CONCAT(r.rule_title)
FROM RULES_TABLE AS c
LEFT JOIN RULES_TABLE AS r
    ON r.parent_id = c.rule_id
WHERE c.parent_id IS NULL AND c.public = 1
GROUP BY c.rule_id
ORDER BY c.cat_position, c.rule_position;

सिंटैक्स हाइलाइटिंग को बनाए रखने के उद्देश्य से कोड का php-ization छोड़ दिया, जो वैसे भी काम नहीं करता है

यदि आप अधिकतम अनुमत group_concat आकार से अधिक हैं तो आप इसे बढ़ा सकते हैं या निम्न संस्करण का उपयोग कर सकते हैं, और php में थोड़ा और प्रसंस्करण कर सकते हैं:

SELECT c.rule_id, c.rule_title, r.rule_title as r_rule_title
FROM RULES_TABLE AS c
LEFT JOIN RULES_TABLE AS r
    ON r.parent_id = c.rule_id
WHERE c.parent_id IS NULL AND c.public = 1
ORDER BY c.cat_position, c.rule_position;

और php में, केवल प्रदान किए गए कंकाल कोड, वास्तविक मानों के साथ भरें, मान लें कि आप pdo का उपयोग करते हैं और आपके pdostatement var का नाम $query है :

$old_rule_id = null;
$rrt = array(); // will contain all r.rule_titles for a give c.rule_id
while( ($i = $query->fetch(PDO::FETCH_OBJ)) !== false ) {
    if( $old_rule_id != $i->rule_id ) {
        if( count($rrt) ) {
            echo ... all the data for previous rule from $rrt ...
            echo ... end of previous element ...
            $rrt = array(); // empty it to collect new data
        }
        echo ... start of current element use data from $i->rule_id and $i->rule_title ...
        $old_rule_id = $rule_id;
    }
    $rrt[] = $i->r_rule_title;
}
// the following is the same if from inside the while, minus reinitialization of $rrt;
if( count($rrt) ) {
    echo ... all the data for previous rule from $rrt ...
    echo ... end of previous element ...
}

सामान को बीच में बदलें ... मान्य कोड के साथ



  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. xampp के साथ उबंटू के भीतर mysql डेटाबेस में ज़ोन टेबल कैसे पॉप्युलेट करें?

  4. java.lang.IllegalStateException:एक बंद EntityManagerFactory पर एक ऑपरेशन निष्पादित करने का प्रयास

  5. साझा को अनन्य लॉक में अपग्रेड करते समय MySQL गतिरोध से बचना