Я нахожусь в задаче соединения трех таблиц: Задача, блок и здание.SQL присоединиться к 2 таблицам к 1 таблице
В таблице задач есть столбец для единицы и столбец для здания.
Любая отдельная задача присваивается только зданию ИЛИ блоку, ни тем, ни другим. Таким образом, каждый столбец в каждой записи всегда равен нулю. В таблице задач есть 6100 записей.
, когда я использую этот JOIN:
select * from task t
join building b on b.id = t.building_id;
Я получаю 628 строк. Это правильный итог строительных задач.
Когда я использую этот РЕГИСТРИРУЙТЕСЬ
select * from active_task at
inner join unit_template ut on ut.id = at.unit_template_id
Я получаю 5472 строк. Это правильное количество заданий на единицу. Если я добавлю их 5472 + 628 = 6100, это будет правильное количество строк в таблице задач.
Когда я запускаю этот запрос:
select * from task t
inner join unit ut on ut.id = t.unit_id
inner join building bt on bt.id = t.building_id
Я получаю ноль строк. Мне нужен мой запрос для извлечения 6100 строк. Любая помощь будет оценена по достоинству.
Что делать, если вы пишете запрос итеративно? Просто добавьте сначала 'JOIN' и убедитесь, что вы получите ожидаемые результаты. ** ТОЛЬКО ** после этого добавить другое соединение – zerkms
Или использовать, где часть –
@denonth: по какой причине? Оптимизатор переписывает 'INNER JOIN + ON' на неявное соединение с' WHERE' перед исполнением – zerkms