自己参加してみてください:
編集: 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;
}
}
したがって、ApplescategがgetCategory(1)
の結果を継承すると仮定します。 Fruits,Apples,Green Apples
である必要があります