私には2つのテーブルユーザーと親がいます。
- 各ユーザーには、一意のIDと親IDがあります(これは、ユーザーをWebサイトに紹介したユーザーです)。
- rootユーザーの親IDは0です。
- 同じ親IDを持つユーザーは、そのIDの子です
ユーザー
ID
名
メール
親
ID
親
IDjoiningAmount
親のIDを指定するクエリが必要です。
このクエリは、次の情報を含むすべての子を返す必要があります
id、name、email、joiningAmount、(このユーザーが持っている子の数)
1つのクエリでこれを行うことは可能ですか?
そうでない場合は、1つのクエリでこれを完了するために、データベースをどのように正規化する必要がありますか。
どんな助けでも大歓迎です。
編集:
usersテーブルには、すべてのユーザー情報が含まれます
これがusersテーブルであるとします。
ID名のメール 1管理者admin@web.com 2ジョンジョン@web1.com 3 Larry Larry@web2.com 4 Jone Jone@web3.com
登録は紹介によってのみ可能です。
adminは誰からも参照されていないため、彼のparentIdは0です。adminが
larryとjohnを参照し(したがって、それらの親IDは1)、johnが彼の紹介から別のユーザーを連れてきて、その名前が彼のjone(したがって、彼の親IDはjohnの名前)であるとします。テーブルは次のようになります。
参加額は、アプリケーションの一部であるため、現時点では無視できます。
id parentId joinAmount 1 0 1000 2 1 1000 3 1 1000 4 2 1000
だから今私は1(admins id)のIDを渡すと彼の子供たちを返すクエリが欲しいです
id、name、email、joiningAmount、(**このユーザーが持っている子の数**) 2、ジョン、John @ web1.com、1000、1(ジョンには子供が1人いるため) 3、Larry、Larry @ web2.com、1000、0