2012-05-10 44 views
3

您好我需要在MySQL查询我的PHP页面,我把我的表设计与数据:需要在mysql中的多层次传销查询

表名:tcustomers

Name, LeftID, RightID, Code 
--------------------------- 
Arul 102  103  101 
James 104  105  102 
Alex 106  107  103 
David 108  109  104 
Sasi 110  111  105 
Prem 112  113  106 
Kumar 114  115  107 

我需要什么当我通过了Arul代码数据,即101,我需要得到整个左,他的权利例子输出

如果这里有人能帮助我,而无需使用storedprocdure,这将是非常有益的并提前:)

+0

什么是退出条件? –

+0

当没有数据时,它将退出。或者你可以说,一旦所有的数据已被提取,它必须退出。 –

+1

MySQL不支持递归函数,所以它不太适合存储分层数据的邻接表模型。您应该考虑重构您的数据以使用嵌套或封闭表。请参阅[本答案](http://stackoverflow.com/a/192462/623041)了解更多信息。 – eggyal

回答

1

谢谢,这是一个部分解决如果你想只为正确答案,并留下元素的数量有限。

这里是一个可能性3右和左3答案与条件代码= 101(了Arul):当然

SELECT 
    c.Name as NameRequested, 
    l1.Name as NameLeft1, 
    l2.Name as NameLeft2, 
    l3.Name as NameLeft3, 
    r1.Name as NameRight1, 
    r2.Name as NameRight2, 
    r3.Name as NameRight3 
FROM tcustomers c 
LEFT JOIN tcustomers l1 ON c.LeftID = l1.Code 
LEFT JOIN tcustomers l2 ON l1.LeftID = l2.Code 
LEFT JOIN tcustomers l3 ON l2.LeftID = l3.Code 
LEFT JOIN tcustomers r1 ON c.RightID = r1.Code 
LEFT JOIN tcustomers r2 ON r1.RightID = r2.Code 
LEFT JOIN tcustomers r3 ON r2.RightID = r3.Code 
WHERE 
    l.Code = 101; 

中可以延长需要容易答案的数目。