Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Добавление  [new]
Rut
Member

Откуда:
Сообщений: 156
Всем добрый вечер и с праздником.

У меня возник такой вопрос.
Имеются 2 таблицы. Например в одной имя и фамилия, а во второй год рождения.
В запросе я добавляю данные во временную таблицу.
таб1:
Id____|____Имя___|____Фам__
1_____|___Иван___|__Иванов
2_____|___Вася___|__Петров

таб2:
Id___|__Год
1____|__2000
2____|__2001

temp:
Id____|____Имя___|____Фам__|__Год
1_____|___Иван___|__Иванов_|_2000
2_____|___Вася___|__Петров_|_2001

Вопрос.

Если клиент уже есть в таблице temp, то второй раз не добавляется.
8 янв 07, 00:18    [3612500]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Поле ID в табл. Temp ключевое?
8 янв 07, 00:23    [3612507]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
Rut
Member

Откуда:
Сообщений: 156
Да
8 янв 07, 00:32    [3612517]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Поэтому и не добавляет. Видимо для этого поля задано Indexed Property (Индексированое поле) совпадения не допускаются.
8 янв 07, 01:13    [3612547]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
Rut
Member

Откуда:
Сообщений: 156
Дело в том, что у меня вообще ничего не добавляется.
А я хочу, чтобы в случае, если у меня в таблице temp уже есть информация по клиенту, то второй раз она не дублировалась и не заносилась в таблице temp
8 янв 07, 01:19    [3612551]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Вот это вы писали в первом посте
Rut
Если клиент уже есть в таблице temp, то второй раз не добавляется


Это в последующем
Rut
А я хочу, чтобы в случае, если у меня в таблице temp уже есть информация по клиенту, то второй раз она не дублировалась и не заносилась в таблице temp

Так в чем проблема? Если клиент есть в temp, то больше он туда и не вставится
8 янв 07, 01:26    [3612557]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
Rut
Member

Откуда:
Сообщений: 156
Проблема в том, что по нужному мне условию данные вообще не хотят добавляться во временную таблицу.
Могу для наглядности сбросить файлик.
8 янв 07, 01:59    [3612572]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Приведите текст запроса
8 янв 07, 02:03    [3612576]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
Rut
Member

Откуда:
Сообщений: 156
NSERT INTO temp ( Клиент, Менеджер, Представитель, pl )
SELECT [2007].Клиент, [2007].Менеджер, Агенты.Представитель, [2007].pl
FROM temp INNER JOIN (Агенты INNER JOIN 2007 ON Агенты.Агент = [2007].Менеджер) ON temp.Клиент = [2007].Клиент
WHERE ((([2007].Клиент)<>[temp].[Клиент]) AND (([2007].Отказ)=1))
ORDER BY Агенты.Представитель;
8 янв 07, 02:09    [3612580]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
Rut
Member

Откуда:
Сообщений: 156
Вот файлик.

К сообщению приложен файл (db2.zip - 22Kb) cкачать
8 янв 07, 02:14    [3612582]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Rut
NSERT INTO temp ( Клиент, Менеджер, Представитель, pl )
SELECT [2007].Клиент, [2007].Менеджер, Агенты.Представитель, [2007].pl
FROM temp INNER JOIN (Агенты INNER JOIN 2007 ON Агенты.Агент = [2007].Менеджер) ON temp.Клиент = [2007].Клиент
WHERE ((([2007].Клиент)<>[temp].[Клиент]) AND (([2007].Отказ)=1))
ORDER BY Агенты.Представитель;


1. WHERE ((([2007].Клиент) Not In([temp].[Клиент])) AND (([2007].Отказ)=1))
2. В предложении From связь табл. Temp с другими надо изменить на Right Join, иначе отсутствующие в Temp записи будут отсеиваться. Не могу сейчас написать точно, поскольку не знаю структуру данных. Возможно, что связь Агенты и [2007] должна оставаться INNER JOIN.
8 янв 07, 02:28    [3612588]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
Rut
Member

Откуда:
Сообщений: 156
Что-то ничего не получается.
Наверно надо идти спать.
Спасибо за помощь.
8 янв 07, 02:41    [3612595]     Ответить | Цитировать Сообщить модератору
 Re: Добавление  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Вот такой запрос работает на ваших данных
INSERT INTO temp ( Клиент, Менеджер, Представитель, pl )
SELECT [2007].Клиент, [2007].Менеджер, Агенты.Представитель, [2007].pl
FROM temp RIGHT JOIN (Агенты LEFT JOIN 2007 ON Агенты.Агент = [2007].Менеджер) 
          ON temp.Клиент = [2007].Клиент
WHERE ((([2007].Отказ)=1) AND (([2007].Клиент) Not In ([temp].[Клиент])))
ORDER BY Агенты.Представитель;
У вас не получилось потому что условие [2007].Отказ=1 на строке, которая должна быть добавлена, не соблюдалось.
8 янв 07, 03:13    [3612608]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить