Probeer zelf lid te worden :
BEWERKEN: Ik ben vergeten de WHERE-clausule te plaatsen
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
Maar de ideale oplossing is om een recursieve functie te hebben die dit zal doen, aangezien je in die tabel een boomstructuur van categorieën beschrijft. De bovenstaande vraag is statisch en gaat 2 niveaus terug (2 subcategorieën) en van wat ik begrijp heb je iets dynamischs nodig.
Iets als de functie hieronder:
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;
}
}
Dus aangenomen dat Apples categorie wordt overgenomen, is het resultaat voor getCategory(1)
zou moeten zijn Fruits,Apples,Green Apples