とレベルの親を先頭に属している場合MYSQLチェックは私はこのようなテーブルがある:Laravelは:子供が1つのクエリ
id | user | parent_id | level |
---------------------------------------------
1 | parent1 | 0 | 1
2 | parent2 | 0 | 1
3 | parent3 | 1 | 2
4 | child1 | 1 | 2
5 | child2 | 4 | 3
child2のから、私はそれが親1に属しているかどうかを確認したいと思います。それは親1なるまで
明白な答えは、child2の>チェック親>チェック親>から始まる各レベルからのクエリを実行することになります。しかし、それは実行するための多くのクエリになります。 Like:
while ($parent = \DB::table('users')->where('parent_id', $child->parent_id)->first()) {
if ($checkparent->id == $parent->id) break; // found the checked parent
else $child = $parent;
}
1つのクエリでこれを実行する方法はありますか? (注:これは、2つの以上のレベルになります)
parent1 <-- to here parent2
/ \
parent3 child1
\
child2 <-- from here
http://dba.stackexchange.com/questions/46393/get-top-most-parent-by-nth-child-id mysqlでは実行できません。 Tbh、それは微視的な最適化です。すでにlaravelを使用しているため、データベースへのリクエストはそれほど重要ではありません。 'id'がプライマリキーであると仮定すると、クエリは速くなければなりません。 –
@AlexBlex:500レベルはどうですか? – user2002495
次に、データモデルまたはストレージエンジンを再考します。 MySQLは目的に合っていません。 –