我目前正在建立一个考勤系统,只有特定的人(A)才能登录并接受另一个人(B,C,D)的出勤。让我举个例子,
如您所见,那里有3个表,login_user
,school_A (CGA)
和school_B (AES)
。
login_user
表中的人是我上面提到的人(A)。
其他两个表是完全不同的学校,school_A (CGA)
和school_B (AES)
。
如您所见user_ID
CGA001
和CGA002
位于school_A (CGA)
表格中,AES001
位于school_B (AES)
表格中。
user_ID
和school_A (CGA)
表格中school_B(AES)
列CK11213
,CK11214
,AK4143
,AK4144
和{{1}是每个学校的学生 - 人(B,C,D)。
我现在的问题是,如何将AK4145
表格中的每个人分别连接到login_user
和school_A (CGA)
表,这意味着school_B (AES)
表示user_ID
将连接到CGAxxx
,其school_A (CGA)
将与AESxxx
相关联。
我正在制作过程中使用school_B (AES)
,php
和mysqli
。
是的,我是一个初学者。
我已经研究过,找不到什么可以解决我的问题,也许我忽略了他们。
如果您有任何改变我的表结构的建议或替代方案,请告诉我。我会接受一切。
提前致谢。
答案 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_A
和school_B
表,这似乎是每所学校的出勤率。相反,请向表login_user
添加一个字段,以显示用户负责的学校school_ID
。
2)表格school_A
和school_B
包含相同的数据,user_ID
,name
和attendance
,仅存在于"排序"学生们靠学校。如果学生转学,则必须将其从一个学校移除并添加到另一个学校。相反,将两个表合并到一个表attendance
中,添加一个字段以标识他们参加的schhol,school_ID
。然后添加一个新表school
,其中包含字段school_ID
和name
,可能的第三个字段school_code
用于" CGA"和" AES"在您的示例数据中,如果这是一条重要的信息。这简化了将学生从一所学校转移到另一所学校的过程,并允许每次添加新学校而不必每次都有新学校。
这为您提供了这个数据库结构:
要选择人(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_user
,login_ID
,school_ID
,login_name
。 pass
表格类似于:attendance
,student_ID
,school_ID
,student_name
。
MySQL online manual是查找所有详细信息的好地方。