Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизMSACCESS. Ошибка синтаксиса Найти похожие ветки
← →
msguns (2004-10-01 13:05) [0]Не нравится ему NOT EXIST и т.д.
Убей, не пойму где ошибка
INSERT INTO FONDSR
(FLT,FLA,Letter, FondNumber, FondType, Category,
AFID, AArcId, ACountry, ASDate, AEDate, AFSize, AQDI,
AQMF, AQS, AAvl, APassT, APassL, APassN,
AJoinL, AJoinN, AUtil, ALossId, ALossDt, ALossDc)
SELECT 0, 1, Letter, FondNumber, FondType, Category,
FID,ArcId, Country,StartDate, EndDate, FondSize,
DontInvent, Microfished, Secret, Availability, PassTo,
PassLetter, PassNumber, JoinLetter, JoinNumber, UtilDate,
LossCauseId, LossDate, LossDoc
FROM Fonds IN "e:\DMsArch\FondsCmp\AlexDB\Data.mdb"
WHERE NOT EXIST
(SELECT Letter,FondNumber,FondType,Category FROM FONDSR AS F,
FONDS IN "e:\DMsArch\FondsCmp\AlexDB\Data.mdb" as FA
WHERE (F.Letter=FA.Letter) AND
(F.FondNumber=FA.FondNumber) AND
(F.FondType=FA.FondType) AND
(F.Category=FA.Category)
)
Вставить в таблицу Fondsr надо из другой базы те записи, ключей которых нет в Fondsr
Заранее благодарен
← →
Жук © (2004-10-01 13:07) [1]not exists
← →
msguns (2004-10-01 13:39) [2]>Жук © (01.10.04 13:07) [1]
>not exists
Там я просто очепятался - в запросе стоит Exists
← →
msguns (2004-10-01 13:39) [3]>Жук © (01.10.04 13:07) [1]
>not exists
Там я просто очепятался - в запросе стоит Exists
← →
sniknik © (2004-10-01 13:50) [4]вряд ли дело в "нерабочести" NOT EXISTS, скорее в этом
Предложение IN
....
Дополнительные сведения
С помощью предложения IN можно одновременно подключиться только к одной внешней базе данных.
попробуй переделай запрос с этим ограничением.
← →
msguns (2004-10-01 14:07) [5]Как же я его переделаю, если таблица, из которой я добавляю, находится в другой БД ?
← →
sniknik © (2004-10-01 14:19) [6]ну... как нибудь так, так... ;о))
© масяня.
в запросе обрашение к одной таблице, так? выборку с ограничением можно сделать за раз? можно. ложить уже из получившегося запроса, без дополнительного обращения к тойже таблице в базе.
← →
msguns (2004-10-01 14:29) [7]>sniknik © (01.10.04 14:19) [6]
Спасибо за помощь. Но аксесс не хочет в запросе на выборку в JOIN`е брать более одного условия.
И вообще отлаживать SQL-запросы в аксесе - это что-то совершенно необъяснимое. Примерно как съезжать по перилам на голой ж..
← →
sniknik © (2004-10-01 14:45) [8]тебе одно только и нужно!
(хотя тут ты не прав JOIN-ов может быть много, только синтаксис "немного" ;о) от стандарта отличается)
вот для примера набросал, вставка из внешней таблици того чего во внутренней нет
INSERT INTO ATab
SELECT b.*
FROM ATab AS a RIGHT JOIN [D:\CBASE.MDB].ATab AS b
ON a.ID=b.ID
WHERE a.ID IS Null
упростил твою кучу условий, таблици должны быть однотипные (лишнего не перечислять), сдесь с одинаковым названием, ID автоинкрементное поле, по нему связь, и естественно сработает только если во внутренней меньше записей чем во внешней.
← →
msguns (2004-10-01 15:32) [9]>sniknik © (01.10.04 14:45) [8]
аксес в котнструкторе "неповторяющегося" запроса мне почти точь-в-точь такое же выдал. Но..
- во-первых, априори у меня в выборке не участвуют ключи (и не могут, т.к. они не нужны по условию). Вместо них используется комбинация 4-х полей, которая уникальна для исх.таблицы (т.е. той, из которой выбираем). В рез.таблице эти же 4 ключа не повторяются (но и не заданы как уникальный индекс)
- во-вторых, полей для связки четыре и как я не пытался их "влепить" в запрос, аксес меня все время посылает..
- в-третьих, меня, наверное, в детстве часто в угол ставили или по голове били, но я не понимаю глубинного смысла вот этого
WHERE a.ID IS Null
Наверное поэтому я не и не миллиардер ;((
← →
msguns (2004-10-01 15:36) [10]А вот в Local SQL такие вещицы на раз проскакивают - никаких проблем.
Эх, макнула меня судьбина с этим гребанным аксесом головушкой да в какушку. Мама, роди меня обратно !!!
← →
msguns (2004-10-01 15:41) [11]PS Почесавши репу, пришел к мысли:
а откуда аксесу известно, что эти 4 ключа не повторяются, если никакой инфы на этот счет к таблице не прилагается ? А ведь при фильтре (это я так назвал встроенный селект) ему надо "идентифицировать" записи совершенно однозначно, не так ли ?
Это что ж, получается, что по фигу секюэль, бери лопату (в смысле ставь курсоры на обе таблицы) и "от забора до рассвета" ?
← →
sniknik © (2004-10-01 15:44) [12]> но я не понимаю глубинного смысла вот этого
> WHERE a.ID IS Null
> Наверное поэтому я не и не миллиардер ;((
странно, я тоже, хотя и понимаю.
правое присоеденение, т.е. все что не присоеденилось слева (а такое будет, таблица меньше) не получит значений. вот их мы и отбираем. (null это как раз пусто)
> - во-вторых, полей для связки четыре
четыре так четыре
все что нужно изменить это добавить
ON a.ID=b.ID AND a.ID1=b.ID1 AND ....
msguns (01.10.04 15:36) [10]
зря. не понимаеш, ругайся на себя. аксесс в своем классе лучшая база. не без заморочек конечно, но и ничего очень страшного тоже нет.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.034 c