如何将表中的每个人分别连接到数据库中的另一个表?

时间:2017-02-14 03:44:24

标签: mysql

我目前正在建立一个考勤系统,只有特定的人(A)才能登录并接受另一个人(B,C,D)的出勤。让我举个例子,this is the database example

如您所见,那里有3个表,login_userschool_A (CGA)school_B (AES)login_user表中的人是我上面提到的人(A)。

其他两个表是完全不同的学校,school_A (CGA)school_B (AES)。 如您所见user_ID CGA001CGA002位于school_A (CGA)表格中,AES001位于school_B (AES)表格中。 user_IDschool_A (CGA)表格中school_B(AES)CK11213CK11214AK4143AK4144和{{1}是每个学校的学生 - 人(B,C,D)。

我现在的问题是,如何将AK4145表格中的每个人分别连接到login_userschool_A (CGA)表,这意味着school_B (AES)表示user_ID将连接到CGAxxx,其school_A (CGA)将与AESxxx相关联。

我正在制作过程中使用school_B (AES)phpmysqli。 是的,我是一个初学者。

我已经研究过,找不到什么可以解决我的问题,也许我忽略了他们。

如果您有任何改变我的表结构的建议或替代方案,请告诉我。我会接受一切。

提前致谢。

2 个答案:

答案 0 :(得分:0)

SELECT * FROM login_users lg LEFT JOIN school_A a ON lg.user_ID = a.user_ID
LEFT JOIN school_B b ON lg.user_ID=b.user_ID 

这将从每个表中选择具有相应数据的用户

答案 1 :(得分:0)

要解决的几个问题:

1)看起来像用户john,mary和olivia没有参加,因此,他们不属于school_Aschool_B表,这似乎是每所学校的出勤率。相反,请向表login_user添加一个字段,以显示用户负责的学校school_ID

2)表格school_Aschool_B包含相同的数据,user_IDnameattendance,仅存在于"排序"学生们靠学校。如果学生转学,则必须将其从一个学校移除并添加到另一个学校。相反,将两个表合并到一个表attendance中,添加一个字段以标识他们参加的schhol,school_ID。然后添加一个新表school,其中包含字段school_IDname,可能的第三个字段school_code用于" CGA"和" AES"在您的示例数据中,如果这是一条重要的信息。这简化了将学生从一所学校转移到另一所学校的过程,并允许每次添加新学校而不必每次都有新学校。

这为您提供了这个数据库结构:

enter image description here

要选择人(B,C,D),特定人(A)可以登录并参加使用

SELECT login_user.name AS taker, school_code, attendance.name AS student FROM login_user LEFT JOIN school USING (school_ID) LEFT JOIN attendance USING (school_ID) WHERE login_user.user_ID='CGA002';

要创建所有能够登录并参加考试的人员列表,根据单个学校(可能不止一个考勤人员)与他们可以参加的人员联系,使用

SELECT login_user.name AS taker, school_code, attendance.name AS student FROM login_user LEFT JOIN school USING (school_ID) LEFT JOIN attendance USING (school_ID) WHERE school_code='CGA';

要创建所有出席者的完整列表,请与他们联系,请使用

SELECT login_user.name AS taker, school_code, attendance.name AS student FROM login_user LEFT JOIN school USING (school_ID) LEFT JOIN attendance USING (school_ID) ORDER BY school_code;

当你添加第三个或第四个学校时,你只需要将数据添加到school表并将新人插入他们所属的 one 表中,或者<{1}},或login_user与他们关联的school_ID。

当然,表格中的字段名称应该更具体一些,我想你的表格会比给定的字段多。在attendance表中,它应该类似于:login_userlogin_IDschool_IDlogin_namepass表格类似于:attendancestudent_IDschool_IDstudent_name

MySQL online manual是查找所有详细信息的好地方。