Я пытаюсь запросить две таблицы для создания ежемесячного отчета о рабочем времени. Когда я присоединяюсь к таблицам, используя INNER JOIN (emp_nr одинаково в обеих таблицах), я получаю следующее. Пожалуйста, извините меня, если у меня нет правильного форматирования.
Сотрудник таблицы
id | emp_nr | name | vorname | address | city .....bla bla bla
Таблица zeit (szeit и ezeit - это дата и время Ymd 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
В коде, когда я меняю ON e.emp_nr = 57 на ON 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
То, что я пытаюсь получить, - это отчет, в котором выдается только правильный идентификатор с правильным именем.
для простейшего 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
При использовании JOINS
вам необходимо указать связь между двумя таблицами с помощью предложения ON
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