[英]MySQL Query Assistance (for PHP Output)
我有一张表,该表列出了MLM的团队成员的层次结构。 我试图弄清楚如何在MySQL中最有效地查询表,以便可以在PHP中输出结果。
我在研究中了解到, while
循环并不理想的情况下,嵌套查询或PHP中的嵌套查询并不理想,但是当我查看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
要找出在乔领导下进行报告的所有这些人的名字吗?
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));
这样做不是很好的开始,而且不知道在Joe领导下有多少个级别,它是不可扩展的。
您能否让我知道如何最好地查询此信息,或者在while循环中结合使用PHP mysql_fetch_array
来查找并回显所有值?
鲜为人知,但是您可以在其自身上连接表。 您将必须给每个实例一个单独的别名,以便您可以根据需要引用它们。
以下查询将检索与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
在数据库中表示分层数据很棘手。 您可以考虑以下任一情况:-
除此之外,如果您继续在子查询上进行子查询,那么您将不可能找到任何可行的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.