MySQL объединяет строки только с 1 идентификатором

0

Я пытаюсь запросить две таблицы для создания ежемесячного отчета о рабочем времени. Когда я присоединяюсь к таблицам, используя 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
Теги:
join

1 ответ

0
Лучший ответ

При использовании 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
  • 0
    Спасибо! Это сработало
  • 0
    Был бы признателен за одобрение и принятие моего ответа.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню