У меня есть запрос ниже с несколькими соединениями вы можете найти его на скрипте sql, который дает мне недействительный DEF.ID
Как я могу сделать следующее соединение для чтения из таблицы DEFINITION
SELECT *
FROM DEFINITION DEF
WHERE EXISTS (SELECT 1
FROM EMPLOYEE E
INNER JOIN MONTHLY_PAYMENT MP ON (MP.ID = E.CODE)
INNER JOIN DEPARTMENT DEP ON (DEP.ID = DEF.ID)
)
в чем именно ошибка? похоже, вам не хватает столбца идентификатора в таблице DEF
@ lad2025, почему в моей скрипте sql отображается ошибка?
@DanielMarcus проверяет скрипт sql на наличие структуры и ее выполнение
MySQL не поддерживает TSQL. Если вы помечаете TSQL, вы, вероятно, используете SQL Server / Sybase
Хорошо, у Def есть столбец ID. У вас только что было почти идентичное квестино.
@paparazzo Я спросил новое, потому что этот запрос содержит множественное соединение
@ lad2025 исправил теги, чтобы быть более точным
Вам необходимо связать DEPARTMENT по крайней мере с одной из двух других таблиц, с которыми он соединяется внутри.
@Moudiz Даже если бы это сработало, какой смысл в этом множественном объединении? Это не соотносится с существующим?


По правилам Oracles есть две проблемы: первый DEPARTMENT должен быть связан хотя бы с одной из двух таблиц, к которым он присоединяется. И, во-вторых, DEF не может использоваться как соединение с вложенными внутренними условиями и поэтому должен использоваться вместо этого в предложении WHERE.
SELECT DEF.ID
FROM DEFINITION DEF
WHERE EXISTS
(
SELECT 1 FROM EMPLOYEE E
INNER JOIN MONTHLY_PAYMENT MP ON (MP.ID=E.CODE)
INNER JOIN DEPARTMENT DEP ON DEP.ID=E.DEP_ID
WHERE DEP.ID=DEF.ID
)
Работает нормально Демо