gen |
Отправлено: 01.05.2004, 11:14 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 36
|
Привет всем!
Очень нужна посказка в составлении елементарного запроса.
Проблема в следующем:
есть таблица — Tab (5 полей: id,Fld1,Fld2,Fld3,Fld4) + генератор id (+1 before Insert)
есть другие 2 таблицы — Srs1,Srs2
составляется запрос на вставку из Srs1 и Srs2 выборки полей соответсвующих таблице Tab:
INSERT INTO tab SELECT Srs1.Fld1,Srs1.Fld2,Srs2.Fld3,Srs2.Fld4 FROM Srs1,Srs2
Но в таком виде запрос вызывает ошибку 804 — несоответствие количества значений количеству полей.
Как реализовать в таком запросе автоматическое заполение поля id?
И почему в запросе типа INSERT INTO <> (...)VALUES(...), при наличии генератора id соответстующее поле заполняется автоматически,
а в запросе типа INSERT INTO <> SELECT <> это вызывает ошибку?
Буду весьма признателен за посказку.
|
|
olegenty |
Отправлено: 03.05.2004, 07:10 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
INSERT INTO tab (Fld1, Fld2, Fld3, Fld4)
select Srs1.Fld1,Srs1.Fld2,Srs2.Fld3,Srs2.Fld4 FROM Srs1,Srs2
м всё заработает.
но, ты меня пугаешь: FROM Srs1, Srs2 — это ж что получается, ты их не объединяешь? ты сам-то понимаешь, СКОЛЬКО записей реально будет, если в каждой из таблиц хотя бы по вшивой 1000 записей окажется.
короче, JOIN втыкай, а так у тебя CROSS JOIN так называемый получается, или, в лучшем случае, FULL OUTER JOIN, что тоже не сахар...
|
|
** gen |
Отправлено: 03.05.2004, 09:07 |
|
Не зарегистрирован
|
Привет!
Примного благодарен за подсказку.
Все работает как надо.
По поводу объединения волноваться не приходится — в реальном запросе речь идет о тривиальной выборке из справочников подразделений и персонала этих подразделений по определенным условиям — в результате получается всего несколько записей.
|
|
olegenty |
Отправлено: 03.05.2004, 10:14 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
ок.
я просто уже забыл, что некоторые вместо JOIN ON пишут условия объединения в WHERE.
|
|
|