需要这些表的SQL命令

时间:2016-03-07 02:51:25

标签: mysql sql

我有以下2个表(学生和出勤):

mysql> describe student;
+----------------------+--------------+------+-----+---------+----------------+
| Field                | Type         | Null | Key | Default | Extra          |
+----------------------+--------------+------+-----+---------+----------------+
| student_id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| student_email        | varchar(255) | YES  |     | NULL    |                |
| student_phone_number | varchar(255) | YES  |     | NULL    |                |
| parent_first_name    | varchar(255) | NO   |     | NULL    |                |
| parent_last_name     | varchar(255) | NO   |     | NULL    |                |
| parent_email         | varchar(255) | NO   |     | NULL    |                |
| parent_phone_number  | varchar(255) | NO   |     | NULL    |                |
| first_name           | varchar(255) | NO   |     | NULL    |                |
| last_name            | varchar(255) | NO   |     | NULL    |                |
| days_absent          | int(11)      | YES  |     | NULL    |                |
| days_tardy           | int(11)      | YES  |     | NULL    |                |
| class_id             | int(11)      | NO   | MUL | NULL    |                |
+----------------------+--------------+------+-----+---------+----------------+


mysql> describe attendance;
+-----------------+------------+------+-----+---------+-------+
| Field           | Type       | Null | Key | Default | Extra |
+-----------------+------------+------+-----+---------+-------+
| student_id      | int(11)    | NO   | PRI | NULL    |       |
| class_id        | int(11)    | NO   | PRI | NULL    |       |
| attendance_date | date       | NO   | PRI | NULL    |       |
| absent          | tinyint(1) | YES  |     | NULL    |       |
| tardy           | tinyint(1) | YES  |     | NULL    |       |
| note            | text       | YES  |     | NULL    |       |
+-----------------+------------+------+-----+---------+-------+

我想查看当天缺席或迟到的所有孩子的出勤率和电子邮件。是否有我可以使用的SQL语句,例如,可以选择缺席/迟到值= 1的学生,然后使用考勤表中指定的student_id,从学生表中提取出勤的所有学生信息。 student_id = student.student_id?

1 个答案:

答案 0 :(得分:1)

只是尝试存在

select student_email,student_phone_number from student std
where exists(
select 1 from attendance atd where std.student_id = atd.student_id
and (atd.absent =1 or atd.tardy =1)
)

只需确保从学生表中选择所有信息,并在考勤表中存在所有过滤器。条件是student_id。

如果您需要来自出席的信息,请使用加入。