Вставка новых строк в таблицу-1 на основе ограничений, определенных в таблице-2 и таблице-3

Я хочу добавить новые строки в таблицу-1 d:\dl на основе ограничения равенства lower(rdl.subdir) = lower(tr.n1)где rdl и tr будут потенциальными псевдонимами для f:\rdl а также f:\tr таблицы соответственно. Я получаю function name is missing ). сообщение при запуске следующей команды в VFP9:

INSERT INTO d:\dl SELECT * FROM f:\rdl WHERE (select LOWER(subdir)FROM f:\rdl in (select LOWER(n1) FROM f:\tr))

Я использую in синтаксис, вместо выражения равенства на основе псевдонима lower(rdl.subdir) = lower(tr.n1) потому что я не знаю, где определить псевдонимы в этой команде.

1 ответ

В общем, лучший способ получить что-то подобное - сначала заставить запрос работать и дать желаемые результаты, а затем использовать его в INSERT.

В общем, в командах SQL вы назначаете псевдонимы, помещая их после имени таблицы, с ключевым словом AS или без него. В этом случае вам не нужны псевдонимы, потому что те, которые вы хотите, совпадают с именами таблиц, и это по умолчанию.

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

Вы определенно тоже делаете слишком много работы. Попробуй это:

INSERT INTO d:\dl ;
  SELECT * ;
    FROM f:\rdl ;
      JOIN f:\tr ;
        ON LOWER(rdl.subdir) = LOWER(tr.n1) 
Другие вопросы по тегам