我有一张表,列出了MLM的团队成员层次结构。我试图找出如何在MySQL中最有效地查询表,以便我可以用PHP输出结果。
我在研究中已经了解到PHP while
循环中的嵌套查询或嵌套查询并不理想,但是当我查看MySQL连接时,我看不到如何正确访问信息。
表值(表名为MLM):
ID Upline FName
1 1 Joe (he is at the top of the hierarchy)
2 1 Jane (Jane is directly under Joe)
3 2 Jack
4 3 Jill
要了解在Joe下报告的所有这些人的姓名?
Select FName from MLM where Upline = 1;
and
Select FName from MLM where Upline in (Select FName from MLM where Upline = 1);
and
Select FName from MLM where Upline in (Select FName from MLM where Upline in (Select FName from MLM where Upline = 1));
这不好开始,不知道乔下有多少级别,它不可扩展。
您能否告诉我如何最好地查询此信息,或者在while循环中组合PHP mysql_fetch_array
以查找并回显所有值?
答案 0 :(得分:1)
不为人所知,但您可以自行加入表格。您必须为每个实例分配一个单独的别名,以便您可以根据需要引用它们。
以下查询将检索具有与Joe相同的上线的所有人:
SELECT m2.* FROM MLM m1
JOIN MLM m2 ON m1.Upline = m2.Upline
WHERE m1.FName LIKE "Joe"
如果您只希望向Joe报告的人,而不是Joe本人,您可以执行以下操作:
SELECT m2.* FROM MLM m1
JOIN MLM m2 ON m1.Upline = m2.Upline
WHERE m1.FName LIKE "Joe"
AND m1.FName <> m2.FName
答案 1 :(得分:0)
在数据库中表示分层数据很棘手。您可以考虑以下任一方面: -
除此之外,如果你继续查询子查询的子查询,你将不会接近实际的解决方案。