我正在尝试查询两个表以创建每月员工时间报告。当我使用INNER JOIN加入表时(emp_nr在两个表中都是相同的)然后我得到以下内容。如果格式不正确,请原谅。
表员工
id | emp_nr | name | vorname | address | city .....bla bla bla
表zeit(szeit和ezeit是日期时间Y-m-d H:i:s)
id | emp_nr | szeit | ezeit |
我的查询
$result = mysqli_query($conn,"
SELECT e.vorname
, e.name
, e.emp_nr
, a.szeit
, a.ezeit
FROM employee e
JOIN zeit a
WHERE a.szeit BETWEEN '$jahr-$monat-01' AND '$jahr-$monat-01' + INTERVAL 1 MONTH - INTERVAL 1 DAY
AND e.emp_nr = 57
ORDER
BY e.emp_nr
, a.szeit
");
我的结果如下:在这里,我只获得名称和emp_nr的所有员工的所有行
Juli Zimmerm 57 2018-02-01 09:45:37 2018-02-01 14:15:08 Juli Zimmerm 57 2018-02-01 18:00:00 2018-02-01 22:30:00 Juli Zimmerm 57 2018-02-01 19:33:00 2018-02-01 19:44:00 Juli Zimmerm 57 2018-02-02 10:31:25 2018-02-02 14:30:25
我改变时的代码 在e.emp_nr = 57 至 在a.emp_nr = 57 我得到以下结果。
每个人都单独列出,但所有时间都相同,并且请求的emp_nr不存在。
Frank Cas 01 2018-02-01 19:33:00 2018-02-01 19:44:00 Julie Cas 03 2018-02-01 19:33:00 2018-02-01 19:44:00 Lisa Ket 15 2018-02-01 19:33:00 2018-02-01 19:44:00 Anja Fis 22 2018-02-01 19:33:00 2018-02-01 19:44:00
我想要的是一份报告,其中只有正确的ID 出现了正确的名字。
用于最简单的SELECT
SELECT emp_nr, szeit, ezeit
FROM zeit
WHERE szeit BETWEEN '2018-02-01' AND '2018-02-01' +
INTERVAL 1 MONTH - INTERVAL 1 DAY
AND emp_nr = 57
结果是没有表员工的相应名称
57 2018-02-01 19:33:00 2018-02-01 19:44:00
答案 0 :(得分:0)
使用JOINS
时,您需要使用ON
子句指定2个表之间的关系
SELECT e.vorname, e.name, e.emp_nr, a.szeit, a.ezeit
FROM zeit a
JOIN employee e ON a.emp_nr = e.emp_nr
WHERE a.szeit BETWEEN '2018-02-01' AND '2018-02-01' +
INTERVAL 1 MONTH - INTERVAL 1 DAY
AND e.emp_nr = 57
ORDER BY e.emp_nr, a.szeit