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

这应该列出您拥有的每个帐户,以及它的 subs 和 sub-subs 的计数。希望这是一个好的起点。

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 回答