繁体   English   中英

MySQL查询协助(用于PHP输出)

[英]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

在数据库中表示分层数据很棘手。 您可以考虑以下任一情况:-

  1. 重新设计表,以便于识别层次结构-检查此链接可更好地了解子查询层次结构的局限性和问题在MySQL中管理层次结构数据
  2. 从表中选择*,然后在您的php代码中通过遍历结果来创建层次结构。

除此之外,如果您继续在子查询上进行子查询,那么您将不可能找到任何可行的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM