Его немного сложнее, поэтому я расскажу немного медленно, просто не буду вдаваться в проблему.ошибочные результаты при объединении в разных таблицах
У меня есть база данных Схема регистрации сотрудников, Эти работники назначены для работы с точки зрения проекта.
1 сотрудник может работать на многих рабочих мест, е-г сотрудника John
находится на project
abc
на задаче 123
снова сотрудник John
также на project
abc
но на задаче 789
456
задача назначить кого-то другого. но это еще одна проблема.
поэтому у нас есть Джон, работающий над тем же проектом для разных задач, из которых у меня есть две записи в моей таблице assign_job.
См. Изображение в маленькой схеме ниже.
Эта схема в порядке. проблема, с которой я сейчас сталкиваюсь, заключается в том, что я хочу иметь таблицы времени. Итак, я добавил две таблицы для расписания времени.
, к которой новая схема будет ниже
Я добавил некоторые пустышки Записи двух новых таблиц для двух проектов, которые перечислены ниже.
- Recruitment & Выбор
- Обучение & Развития
для проекта 1 я добавил 31 записей означает на каждый день есть некоторое время работал сотрудник сделал. , но для проекта 2 сотрудник работал только 1 день.
Теперь я запустил этот запрос, который Я думаю, что это неправильный способ создания объединений в этой ситуации. cuz из которых я отправляю этот вопрос, так как получаю неправильные результаты для данных в базе данных.
SELECT
TS.`date_created` AS TimeSheetMonth,
TSD.`project_id` AS ProjectID,
TSD.`date` AS WorkDate,
TSD.`hours` AS WorkHours,
TS.`employee_id` AS EmployeeID,
E.`full_name` AS EmployeeName,
MLP.`project_title` AS ProjectTitle,
TS.`id` AS TimeSheetID
FROM timesheet TS
INNER JOIN timesheet_details TSD
ON TS.`id`= TSD.`timesheet_id`
INNER JOIN employee E
ON E.`employee_id` = TS.`employee_id`
INNER JOIN assign_job AJ
ON AJ.`employee_id` = E.`employee_id` AND AJ.`trashed` = 0
INNER JOIN ml_projects MLP
ON AJ.`project_id` = MLP.`project_id`
INNER JOIN ml_projects TMLP
ON TMLP.`project_id` = TSD.`project_id`
WHERE TS.`id`=1
GROUP BY TSD.`timesheetDetails_id`, TSD.`project_id`
Как вы можете видеть на скриншоте ниже, я получаю название проекта для проекта ID 1, где, как я получаю 2 как Project ID .. Может быть есть еще вопросы. скажите, что это я делаю неправильно в этих объединениях?
============================
Update
SQLFIDDLELINK: нажмите на заголовок или копию снизу.
http://sqlfiddle.com/#!2/dc4585/1
=========================== Я хочу, чтобы отдельные записи, как я хочу, чтобы показать его в таблице выглядеть ниже одного.
поддерживается только для усилий, которые вы приложили, чтобы ваш вопрос выглядел хорошо! – Konstantin
Удалите 'AND AJ.trashed = 0' и напишите его в where where. Также вместо AND AJ.'trashed' = 0 используйте 'AND AJ.employee_id = TS.employee_id'. Также присоединяются к AJ.project_id и TSD.project_id отсутствует. И ваша группа имеет TSD.timesheetDetails_id', но не в выборе? – SMA
Я не уверен, почему вам нужно дважды присоединиться к ml_project, а затем использовать разные столбцы из этих двух таблиц? Я считаю, что в этом случае это не нужно. Fiish, что диаграмма отношений, и это упростит ситуацию – Konstantin