Php 将MySQL数据显示到HTML表中(解释清楚)
好的,我有一个应用程序,如本文所述: 我已经准备了一个场景来尽可能清楚地回答我的问题:Php 将MySQL数据显示到HTML表中(解释清楚),php,data-structures,mysql,Php,Data Structures,Mysql,好的,我有一个应用程序,如本文所述: 我已经准备了一个场景来尽可能清楚地回答我的问题: Users table: +----------+-----------------+ | user_id | email | +----------+-----------------+ | user_1 | user1@email.com | | user_2 | user2@email.com | | user_3 | u
Users table:
+----------+-----------------+
| user_id | email |
+----------+-----------------+
| user_1 | user1@email.com |
| user_2 | user2@email.com |
| user_3 | user3@email.com |
| user_4 | user4@email.com |
+----------+-----------------+
*请注意,用户_3和用户_4没有自己的域
Domains table:
+-----------+------------+
| owner_id | domain |
+-----------+------------+
| user_1 | dom-1.com |
| user_1 | dom-2.com |
| user_2 | dom-3.com |
+------------------------+
下表显示了域的用户和所有者:
User-Domain table:
+----------+-------------+-----------+
| user_id | domain | owner_id |
+------------------------+-----------+
| user_1 | dom-1.com | user_1 |
| user_1 | dom-2.com | user_1 |
| user_2 | dom-3.com | user_2 |
| user_3 | dom-1.com | user_1 |
| user_3 | dom-2.com | user_1 |
| user_4 | dom-1.com | user_1 |
+------------------------+-----------+
我的问题是,如何以以下格式输出使用给定用户域的每个用户的列表
例如,下面是一个HTML表:
List of users who are using User_1's domains (HTML TABLE):
+-------------------+-----------------------+
| Email | domains |
+-------------------+-----------------------+
| user3@email.com | dom-1.com, dom-2.com |
| user4@email.com | dom-1.com |
+-------------------+-----------------------+
此查询将为您提供结果。从中显示HTML表应该很容易
SELECT
u.email,
group_concat(d.domain SEPARATOR ', ')
FROM
domains d
JOIN user_domain ud ON d.domain=ud.domain AND d.owner_id=ud.owner_id AND d.owner_id!=ud.user_id
JOIN users u on ud.user_id=u.user_id
WHERE d.owner_id='user_1'
GROUP BY u.email
基本上,您可以选择“user_1”拥有的所有域,然后选择这些域的所有user_ID,然后选择这些user_ID的所有用户。在此之后,您可以通过用户的电子邮件对结果进行分组,并连接用户正在使用的所有域名。此查询将为您提供结果。从中显示HTML表应该很容易
SELECT
u.email,
group_concat(d.domain SEPARATOR ', ')
FROM
domains d
JOIN user_domain ud ON d.domain=ud.domain AND d.owner_id=ud.owner_id AND d.owner_id!=ud.user_id
JOIN users u on ud.user_id=u.user_id
WHERE d.owner_id='user_1'
GROUP BY u.email
基本上,您可以选择“user_1”拥有的所有域,然后选择这些域的所有user_ID,然后选择这些user_ID的所有用户。之后,您将根据用户的电子邮件对结果进行分组,并连接用户正在使用的所有域名。Lukas,我尝试了,但出现了一个错误。。。1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第6行“ANS d.owner\u id=ud.owner\u id LEFT JOIN users u on ud.user\u id=u.user\u id WHERE”附近要使用的正确语法。它似乎返回任何域用户,当然每个所有者也是用户,如user\u domain表所示。我测试了新查询,现在得到了不寻常的结果。它仍然返回所有者,但这一次,所有者的电子邮件为空,如果其他用户正在使用域,则不会列出所有者的电子邮件。我不知道这是否有意义,但基本上这个结果更糟。我可以过滤掉电子邮件为空的行,但我也不认为这是您所期望的。只需将LEFT JOIN更改为JOIN。我最初误解了这个查询,我认为你想要一个域列表,一个所有用户的域列表,而你想要一个用户列表和所有用户的域列表。卢卡斯,我试过了,我得到了一个错误。。。1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第6行“ANS d.owner\u id=ud.owner\u id LEFT JOIN users u on ud.user\u id=u.user\u id WHERE”附近要使用的正确语法。它似乎返回任何域用户,当然每个所有者也是用户,如user\u domain表所示。我测试了新查询,现在得到了不寻常的结果。它仍然返回所有者,但这一次,所有者的电子邮件为空,如果其他用户正在使用域,则不会列出所有者的电子邮件。我不知道这是否有意义,但基本上这个结果更糟。我可以过滤掉电子邮件为空的行,但我也不认为这是您所期望的。只需将LEFT JOIN更改为JOIN。我最初误解了这个查询,我认为您需要一个域列表,一个所有用户的列表,而您需要一个用户及其所有域的列表。