0

現在、次のクエリを使用しています...

SELECT id, account_number, 
       (SELECT count(*)
        FROM `member_tbl` t2
        WHERE t2.referred_by = t1.account_number
       ) AS total_referred
FROM `member_tbl` t1;

そして、それは次の結果を提供します...

id - id of memenr
account_number - account number of user
total_referred - total number of members referred by account_number

しかし、次のような結果をさらに取得したい...

total_reffered2 - total number of members that THEY(all accounts referred by account_number) all referred

total_reffered3 - total number of members that referred by all members of total_reffered2

mysql フィドルを確認してください

また、mysql fiddle dataに従って、クエリは次の値を返す必要があります...

| id | account_number  | referred_by1  | referred_by2 | referred_by3
+----+-----------------+---------------+--------------+-------------
|  1 | ac203003        | 0             | 0            | 0
+----+-----------------+---------------+--------------+-------------
|  2 | ac203004        | 1             | 1            | 0
+----+-----------------+---------------+--------------+-------------
|  3 | ac203005        | 2             | 1            | 1
+----+-----------------+---------------+--------------+-------------

別の例を挙げましょう

すべてのメンバーが常に 10 人の紹介者を持っていたとしたら...

referred_by1 = 10
referred_by2 = 100
referred_by3 = 1000

混乱しています。このクエリをどのように記述すればよいですか?

4

1 に答える 1

0

より複雑なクエリを使用して、現在と同じ道をたどることができます。これがあなたが望むものだと思います:

SELECT id, account_number, 
       (SELECT count(*)
        FROM `member_tbl` t2
        WHERE t2.referred_by = t1.account_number
       ) AS total_referred,
       (SELECT count(*)
        FROM `member_tbl` t2 join
              member_tbl t3
              on t3.referred_by = t2.account_number
        WHERE t2.referred_by = t1.account_number
       ) AS refer4ed_by_2,
       (SELECT count(*)
        FROM `member_tbl` t2 join
              member_tbl t3
              on t3.referred_by = t2.account_number join
              member_tbl t4
              on t4.referred_by = t3.account_number
        WHERE t2.referred_by = t1.account_number
       ) AS referred_by_3
FROM `member_tbl` t1;

これは、SQL Fiddle からの「期待される」結果と一致しません。しかし、期待される結果には正しい行数が含まれていないため、正しくないように見えます。

于 2013-08-12T23:23:41.113 に答える