Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1097602832
GanibalLector
2004-10-12 21:40
2004.10.31
Книга(и) по ООП???


1-1098205530
Sirruf
2004-10-19 21:05
2004.10.31
Alignment in TEdit


1-1097746852
jenbond
2004-10-14 13:40
2004.10.31
Нужен совет в работе прогораммы


1-1098105957
Leaner
2004-10-18 17:25
2004.10.31
Странное выражение: SetLength(S,Length(PChar(S)));


14-1097236559
vecna
2004-10-08 15:55
2004.10.31
Вот такое вот гуманное общество





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский