を返す与えられたこれは、カテゴリ/サブカテゴリのサイトのナビゲーション格納するためのテーブルを次のとおりです。これらは、テーブル内のエントリである隣接モデルは、idはリーフノード
$query = "CREATE TABLE categories (
id int(11) NOT NULL auto_increment,
name varchar(100) NOT NULL,
parentid int(11) NOT NULL,
PRIMARY KEY (id)
)" ;
と言うの
id name parentid
1 animal NULL
2 vegetable NULL
3 mineral NULL
4 doggie 1
5 kittie 1
6 horsie 1
7 gerbil 1
8 birdie 1
9 carrot 2
10 tomato 2
11 potato 2
12 celery 2
13 rutabaga 2
14 quartz 3
何私は、与えられたidに対してすべてのリーフノードが返され、リーフノードのidが与えられた場合、リーフノード自体が返されるというようなSQLクエリが必要です。
id2が設定されている場合、返される行は、ニンジン、トマト、ジャガイモ、セロリ、ルタバガです。 idが9の場合、返される行は-9そのものです
可能ですか?
私のsubcategoiresは3レベル以上深くは行かないでしょう。
on this pageというコードを試しましたが、リーフノードIDが与えられていればリーフノードは与えられません。
おかげ
は私が
SELECT distinct t1.name FROM
categories AS t1 LEFT JOIN categories as t2
ON t1.id = t2.parent
LEFT JOIN categories as t3
ON t2.id = t3.parent
WHERE t1.parent = ? OR t1.id = ?
..いくつかのクエリを試みたが、私は単純に参加し理解することはできませんよ。
編集:リーフノードIDが与えられている場合、私はリターンリーフノードを捨てることができます。今は、カテゴリ/サブカテゴリ・ノードがあれば、すべてのリーフ・ノードを戻す問合せが必要です。おかげで再び
質問は何ですかu今まで試してください –
あなたは隣接リストから離れ、ネストされたセットまたはクロージャーテーブルを使用すると、あなたの人生をもっと楽にしてくれます... [この回答](http: /stackoverflow.com/a/192462/623041)。 – eggyal
私はeggyvalに同意します:MySQLは(まだ)再帰的なクエリをサポートしていないので、隣接モデルを使用することはMySQLにはあまり適していません –