MySQL、SQL、PHP我可以从第三个连接的两个表中获取数据吗


MySQL, SQL, PHP can I bring data from two tables joined by a third

我遇到问题我有3张桌子:

1 table named "members" (it has the members data, ID, Username, Password)
2 table named "schools" (it has list of schools ID, School_Name, School_Number)
3 table named "members_schools" (Here I two columns: User_ID, School_ID)

所以我正处于混乱之中,我需要实现一个排序或分组系统例如:圣彼得学校,8号,在"学校"表中有一个ID 1

用户有权从列表中选择这个学校,然后我进行了一个查询,将他们的选择保存在"members_schools"中,类似于:

User_ID  ::  Scool_ID
4        ::   1

这应该会让人想起:ID为4的用户正在ID为1的学校上学,这就是这里的"St.Peter学校"

现在我试着把桌子放在一起,但到目前为止运气不好!!我很困惑如何实现这一点,从三个表中检索数据并按此顺序显示在页面上。

School               ::     No. Attenders
School Of St.Peter   ::     "NUMBER OF MEMBERS WHO HAVE APPLIED FOR THIS SCHOOL"

谢谢大家。

在需要所有用户的详细信息之前,您不需要使用三个表。为了获得计数,我们只需要使用schoolsmember_schools表。

使用LEFT JOIN,然后计算结果中的user_id

SELECT schools.School_Name AS School, IFNULL(COUNT(member_schools.User_ID),0) AS Number_of_Attenders
FROM schools LEFT JOIN member_schools
ON schools.ID = member_schools.School_ID
GROUP BY schools.School_name

样本输出

School               ::     Number_of_Attenders
School Of St.Peter   ::     4

要显示所有成员的用户名,请使用GROUP_CONCT

SELECT schools.School_Name AS School, GROUP_CONCAT(members.Username) AS Attenders
FROM schools LEFT JOIN member_schools
ON schools.ID = member_schools.School_ID
INNER JOIN members
ON member_schools.User_ID = members.ID
GROUP BY schools.School_name

样本输出

School               ::     Attenders
School Of St.Peter   ::     Isaac, Kevin, Rockse, Aish
SELECT schools.School_name AS `School`, COUNT(0) AS `Nr. Attenders`
FROM schools INNER JOIN members_schools ON schools.id = members_schools.School_ID
GROUP BY schools.School_name

会给你每个学校的会员数量吗成员表与出席人数无关。