在多个表上使用多个查询从多个表中获取数据
问题描述:
我在php和mysql中为学校创建考勤管理系统。我在数据库中3代表它们是:在多个表上使用多个查询从多个表中获取数据
1. Students
id
student_name
class
2. subjects
id
subjects
3. attendances
id
subject_id
student_id
attend (boolean)
today_date
我只储存谁出席出席表班学生。
我想获取参加或不参加特定班级,日期和主题的所有学生(在或不在参加表中)的列表。
赞;
Attendance for Class - X(Physics) on 18-08-2017
______________________________
| Student Name | Attendance |
------------------------------
| Foo | 0 |
| Bar | 1 |
| Baz | 0 |
| Qux | 1 |
------------------------------
我试图查询
SELECT s.id,s.student_name, a.attend as attend
FROM attendances as a
INNER JOIN students as s on s.id = a.student_id
WHERE s.class = 'X'
AND a.subject_id = 3
AND a.date = '2017-08-18'
但我没有得到我想要的结果。我相信会有一些更好,更简单的方法来实现这一点,但我没有这样使用SQL。
答
下面的查询可能会帮助你实现理想的结果:
SELECT s.id,s.student_name, IFNULL(a.attend, 0) as attend FROM students as s LEFT JOIN attendances as a on s.id = a.student_id WHERE s.class = 'X' AND a.subject_id = 3 AND a.date = '2017-08-18'
谢谢,但这给人仅在出勤表中可用的学生,但我想这是在出勤或不可用所有的学生。 – Cody
使用右连接。 –
我试过,但结果相同。我认为这是因为这些条件“a.subject_id = 3 AND a.date ='2017-08-18'”它正在给出这个结果。有没有办法来操纵这些条件。 – Cody