Вставка новых строк в таблицу-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)