Множественное внутреннее соединение, в котором существует недопустимый идентификатор

У меня есть запрос ниже с несколькими соединениями вы можете найти его на скрипте 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)
             )

Работает нормально Демо

Lukasz Szozda 10.04.2018 18:13

в чем именно ошибка? похоже, вам не хватает столбца идентификатора в таблице DEF

Daniel Marcus 10.04.2018 18:14

@ lad2025, почему в моей скрипте sql отображается ошибка?

Moudiz 10.04.2018 18:16

@DanielMarcus проверяет скрипт sql на наличие структуры и ее выполнение

Moudiz 10.04.2018 18:16

MySQL не поддерживает TSQL. Если вы помечаете TSQL, вы, вероятно, используете SQL Server / Sybase

Lukasz Szozda 10.04.2018 18:16

Хорошо, у Def есть столбец ID. У вас только что было почти идентичное квестино.

paparazzo 10.04.2018 18:17

@paparazzo Я спросил новое, потому что этот запрос содержит множественное соединение

Moudiz 10.04.2018 18:18

@ lad2025 исправил теги, чтобы быть более точным

Moudiz 10.04.2018 18:20

Вам необходимо связать DEPARTMENT по крайней мере с одной из двух других таблиц, с которыми он соединяется внутри.

RBarryYoung 10.04.2018 18:22

@Moudiz Даже если бы это сработало, какой смысл в этом множественном объединении? Это не соотносится с существующим?

paparazzo 10.04.2018 18:37
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
10
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По правилам 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
 )

Другие вопросы по теме