स्वयं शामिल होने का प्रयास करें:
संपादित करें: मैं 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
होना चाहिए