0

ユーザー アカウントが下位アカウントを所有できるユーザー システムがあります。

この関係を表現するために、次の mysql テーブルがあります。

TABLE ACCOUNTS
ID
name

TABLE OWNEDACCOUNTS
accountID -> ACCOUNTS(ID)
ownerID -> ACCOUNTS(ID)

これらの表からは明らかではありませんが、この関係は 2 レベルの深さしかありません。

アカウント -> サブアカウント -> サブサブアカウント

現在、最上位のアカウントに属するすべてのサブアカウントを次のように選択できます。

SELECT  a.ID
FROM    accounts AS a
JOIN    ownedAccounts AS o
ON      o.accountID = a.ID
        AND o.ownerID = ?

しかし、私が本当に望んでいるのは、単一の最上位アカウントに属するすべてのサブアカウントとすべてのサブサブアカウントを選択することです。どうすればいいですか?

ご協力いただきありがとうございます(事前に)

4

2 に答える 2

0
Select ...
From accounts AS a
    Join ownedAccounts AS o
        On o.accountID = a.ID
    Join accounts AS owner1
        On owner1.ID = o.ownerID
    Left Join ownedAccounts AS o2
        On o2.accountID = owner1.ID
    Left Join accounts As owner2
        On owner2.ID = o2.ownerID
Where o.ownerID = ?
于 2012-05-01T05:22:22.333 に答える
0

これにより、所有しているすべてのアカウントと、そのサブサブとサブサブの数が一覧表示されます。それが良い出発点であることを願っています。

SELECT  a.ID, count(sub.accountID), count(subsub.accountID)
FROM    accounts AS a
LEFT JOIN    ownedAccounts AS sub ON      sub.ownerID = a.ID
LEFT JOIN    ownedAccounts AS subsub ON      subsub.ownerID = sub.accountID
于 2012-05-01T12:31:16.027 に答える