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

अभिभावक बाल संबंध के साथ श्रेणी डेटा के लिए क्वेरी का चयन करें

स्वयं शामिल होने का प्रयास करें:

संपादित करें: मैं WHERE क्लॉज डालना भूल गया

SELECT
    a.name,
    b.name,
    c.name
FROM 
    category as a
LEFT JOIN category as b
    ON b.parent_id = a.id
INNER JOIN category as c
    ON c.parent_id = b.id
    AND c.inherit = 'Y'
WHERE
    a.id = 1

लेकिन आदर्श समाधान एक पुनरावर्ती कार्य है जो ऐसा करेगा क्योंकि उस तालिका में आप श्रेणियों के पेड़ का वर्णन कर रहे हैं। ऊपर की क्वेरी स्थिर है यह 2 स्तरों (2 उपश्रेणियों) में वापस जाती है और जो मैं समझता हूं उससे आपको कुछ गतिशील चाहिए।

नीचे दिए गए फंक्शन जैसा कुछ:

public String getCategory(int categId){

    String sSql = "SELECT name FROM category WHERE id = " + categId ;
    String name = oDb.exec(sql).get("name");

    sSql = "SELECT id FROM category WHERE inherit = 'Y' AND parent_id = " + categId ;
    int nextCategId = oDb.exec(sql).get("id");

    if(nextCategId != null){
        return name + "," + getCategory(nextCategId);
    }else{
        return name;
    }

}

तो यह मानते हुए कि सेब केटेग को getCategory(1) . के लिए परिणाम विरासत में मिला है Fruits,Apples,Green Apples होना चाहिए



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि 1215:ON DELETE SET NULL . का उपयोग करते समय विदेशी कुंजी बाधा नहीं जोड़ सकता

  2. लेन-देन के साथ mysql की अंतिम सम्मिलित आईडी कैसे काम करती है? + लेनदेन प्रश्न

  3. एक MySQL तालिका में लापता मानों को इंटरपोलेट करें

  4. मैपबॉक्स जावास्क्रिप्ट एपीआई के साथ उपयोग करने के लिए MySql से php में एक GeoJson बनाना

  5. ग्रुप बाय क्लॉज के साथ उपयोग किया जाने वाला MAX फ़ंक्शन