Выберите имя двух внешних ключей, ссылающихся на одну и ту же таблицу первичных ключей

#sql #hana

#sql #hana

Вопрос:

У меня есть таблица транзакций инвентаризации Transaction_Log

Столбцы log_id , to_warehouse , from_warehouse , оба ВНЕШНИХ ключа ссылаются на таблицу хранилища OWHS со столбцами whs_id , whs_name

Мне нужно вывести данные с помощью этих столбцов: log_id , to_warehouse_name , from_warehouse_name

Пробовал это

 SELECT t.log_id, w1.whs_name AS to_warehouse_name, w2.whs_name from_warehouse_name
FROM OWHS w1, OWHS w2
 INNER JOIN Transaction_Log t ON w1.whs_id = t.to_warehouse AND w2.whs_id = t.from_warehouse
  

но это выдает ошибку

недопустимое имя таблицы: w1.whs_id

Я не уверен, корректен ли запрос для вывода того, что я хочу, но ошибка уже сбивает меня с толку.

Я использую базу данных SAP HANA, но я немного изменил имена столбцов для этого сообщения. Я также возвращаюсь к программированию баз данных через несколько лет, поэтому прошу прощения, если это основной вопрос, но мой поиск в Google не возвращает ничего близкого к тому, что я хочу.

Ответ №1:

Никогда не используйте запятые в FROM предложении. Точка. Запишите запрос как:

 SELECT t.log_id, w1.whs_name AS to_warehouse_name, w2.whs_name from_warehouse_name
FROM OWHS w1 JOIN
     Transaction_Log t
     ON w1.whs_id = t.to_warehouse JOIN
     OWHS w2
     ON w2.whs_id = t.from_warehouse;
  

Хотя вы также могли бы решить проблему, заменив на , , CROSS APPLY что просто сбивает с толку логику. Вы ищете два простых JOIN s.