0

だから私たちは持っています:

table users

id name password parent_id

最初のユーザーはID1を持ち、他のユーザーはparent_id 1を持っているので、parent_id == 1を持つすべてのユーザーを選択します-彼らは1のユーザーの子です、大丈夫ですが、今は選択する必要がありますもちろん存在する場合、IDを持つユーザーの前に選択されたparent_idを持つユーザー

    user with id 1
   /      |     \
  /       |      \
 /        |       \
users with parent_id 1

user id 2    user id 3 id  user 4
|          |        |
|          |        |
|          |        |

これは同じです。各ユーザーに対してparent_id2、3、4を持つすべてのユーザーを選択する必要があります。これは、上から下にピラミッド(三角形)のようなものです。

だから問題は、IDを抽出してから他のクエリを作成することによって、多くのクエリではなく、一度にそれを選択するクエリをどのように作成できるかということです-それは良くないと思います

アイデアはありますか?

4

2 に答える 2

0

CIを使っているようです。この回答を見ることができます。あなたの質問に多少関連しています。NULL最初に親 IDを持つユーザーを選択してから、その子に入力することができます

https://stackoverflow.com/a/9937130/876117

于 2012-06-29T08:38:58.263 に答える
0

ここにあなたの問題をカバーする質問があります:
MySQLのツリー構造テーブルを単一のクエリで任意の深さまでクエリすることは可能ですか?

以下のクエリは、単一のユーザーの子と孫を検索する場合にのみ機能し、質問を誤解した結果です!

userテーブル自体を 2 回結合してみることができます。

SELECT * FROM users as up 
JOIN users as u on up.id=u.parent_id 
JOIN users as uc on u.id=uc.parent_id 
WHERE up.id={$grandParentUserId}

エイリアス: up = ユーザーの親、u = ユーザー、us = ユーザーの子。
確かにきれいな解決策ではありませんが、それは単一の要求です。

于 2012-06-29T08:07:16.510 に答える