【问题标题】:php/mysql. selecting 2 common fields in 2 tablesphp/mysql。在 2 个表中选择 2 个常用字段
【发布时间】:2017-10-20 14:50:01
【问题描述】:

我正在做一个关于使用 PHP 和 MySQL 的考勤系统的项目。我的 SQL 语法有问题。我想在我的“学生”表中显示所有学生的姓名以及“出勤”表中的记录,但我继续在屏幕上循环 5 条额外记录。这是我到目前为止所做的。

SELECT students.name as StudentName, attendance.timelogin as TimeLogin, attendance.datelogin as DateLogin FROM students, attendance WHERE students.strand LIKE '%TVL%' AND students.gender ='Male' AND attendance.datelogin LIKE '%{$month}%' AND attendance.timelogin >= '12' ORDER BY students.name ASC;

【问题讨论】:

  • 学生的*来自我的“学生”表
  • 我没有看到你正在加入 2 个表。
  • 我想在 html 表的日期编号列中显示 P 代表现在,L 代表迟到,A 代表缺席。
  • 我之前用过这个,但它没有显示我想要的。
  • 选择 students.name 作为 StudentName,从 students.student_id 上选择出勤率作为状态 LEFT 加入出勤率 student.student_id = admission.student_id WHERE admission.datelogin LIKE '%{$month}%' AND admission.timelogin >= '12' AND students.strand LIKE '%TVL%'ORDER BY students.name ASC;

标签: php mysql


【解决方案1】:

您需要正确添加连接条件,因此如果学生表中有主键Id,而出勤表中有另一个外键studentid,请使用它。并像这样使用 ANSI 连接语法:

SELECT 
  s.name as StudentName, 
  a.timelogin as TimeLogin, 
  a.datelogin as DateLogin 
  UPPER(LEFT(status, 1)) AS Status
FROM students AS s 
INNER JOIN attendance AS a ON s.Id = a.StudentId
WHERE s.strand LIKE '%TVL%' 
  AND s.gender ='Male' 
  AND a.datelogin LIKE '%{$month}%' 
  AND a.timelogin >= '12' 
ORDER BY s.name ASC;

【讨论】:

  • 如何使用代码“FROM students AS s INNER JOIN出席AS a”中的变量a和s??
  • a 和 s 只是表名的别名
  • @JanMichaelBesinga 就像 Lio 所说,它只是别名,您可以摆脱它们并使用表的全名。
  • 是否可以使用while循环连续显示每天的“状态”记录?
  • 我想在 html 表的日期编号列中显示 P 代表现在,L 代表迟到,A 代表缺席。
猜你喜欢
  • 2014-10-28
  • 2012-03-19
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多