Передача параметров в подзапрос

У меня есть запрос SQL

SELECT targetDate, anEvent
FROM myTable mt
JOIN lookupTable lookup 
  ON lookup.startDate < mt.targetDate AND endDate > mt.targetDate

Когда я пытаюсь превратить его в подзапрос

SELECT targetDate, sub.anEvent
FROM myTable mt
JOIN
(
  SELECT anEvent
  FROM lookupTable lookup
  WHERE lookup.startDate < mt.targetDate AND endDate > mt.targetDate
) sub

Я получаю сообщение об ошибке «mt is not defined» .
Мне нужно сделать это подзапросом, как это исправить?

похоже, что псевдоним mt для myTable отсутствует в приведенном ниже запросе

Barbaros Özhan 05.09.2018 19:36

Это должно быть так, чтобы попытаться увидеть, есть ли какой-то способ сократить область действия псевдонима. Отредактировал.

Peter 05.09.2018 19:50

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

Rob Paller 08.09.2018 02:22
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
166
2

Ответы 2

Такого же результата вы можете достичь, выполнив следующие действия.

SELECT T.targetDate, T.anEvent

FROM 
(
  SELECT targetDate, anEvent
FROM myTable mt
JOIN lookupTable lookup 
  ON lookup.startDate < mt.targetDate AND endDate > mt.targetDate
) T

надеюсь, что это сработает.

Зачем делать подзапрос? Ваш первый запрос был идеальным.

SELECT targetDate, anEvent
FROM myTable mt
JOIN lookupTable lookup 
ON lookup.startDate < mt.targetDate AND endDate > mt.targetDate

Мы пытаемся придерживаться стандарта кодирования.

Peter 05.09.2018 19:49

Подвыбор - не всегда хорошая идея. Какого стандарта кодирования вы хотите придерживаться?

DanB 05.09.2018 19:50

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

Peter 05.09.2018 20:29

Стандарты кодирования должны обеспечивать соблюдение передовых практик и эффективности программирования. Если вы хотите, чтобы ваш код было легче читать, подумайте о форматировании и блоках комментариев, если они являются частью сценария.

Rob Paller 08.09.2018 02:25

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