Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось? / 10 сообщений из 10, страница 1 из 1
16.08.2016, 14:07
    #39292614
Arhirru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
Всем привет! Помогите пожалуйста решить проблему! Есть база Access, в ней запрос qdfOcenka, основанный на таблице tblOcenka. Запрос выдаёт дублированные записи, хотя в основной таблице дубляжа нет. Причём дублируются все поля, включая ID. Подскажите пожалуйста, от чего это может быть и как сделать так, что бы этого больше не было?
...
Рейтинг: 0 / 0
16.08.2016, 14:32
    #39292631
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
В некоем запросе на основании какой-то таблицы дубликаты появляются - почему-то...

Мало данных для осмысленного ответа.
...
Рейтинг: 0 / 0
16.08.2016, 14:47
    #39292640
Arhirru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
Akina,

А какие данные нужны для осмысленного ответа? Саму базу скинуть? Или что нужно-то?
...
Рейтинг: 0 / 0
16.08.2016, 14:58
    #39292646
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
Зачем всю базу? Желательно видеть таблицу tblOcenka, и сам запрос qdfOcenka. Было бы хорошо так же увидеть скрин результата запроса с примером дубляжа. Потому что пока при минимуме данных слишком много вариантов, бессмысленно заниматься гаданиями и тут расписывать свои умняки ;)
...
Рейтинг: 0 / 0
16.08.2016, 15:05
    #39292651
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
Arhirru запрос qdfOcenka, основанный на таблице tblOcenka. Запрос выдаёт дублированные записи Так не бывает. Вероятно запрос строится не на одной, а на нескольких таблицах. И связь между таблицами 1 ко многим как минимум.

Текст запроса в студию...
...
Рейтинг: 0 / 0
16.08.2016, 15:52
    #39292684
Arhirru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
Ну да, подсчитала, аж на трёх таблицах основано
qdfOcenki:
SELECT tblOcenka.ID, tblOcenka.DateZakaz, tblOcenka.ContactZakazchik, tblOcenka.StoimostDog, tblOcenka.Dogovor, tblOcenka.ClientID, tblOcenka.Zakazchik, tblOcenka.TipObecta, tblMain.Client AS OtKogoCalc, tblOcenka.SummVozvrat, tblOcenka.VozvratKomment, tblMain.FIO AS OtKogoFIOCalc, tblOcenka.Sotrudnik, tblOcenka.Status, tblOcenka.DateBezNal, tblOcenka.StoimostSchet, tblOcenka.DataNal, tblOcenka.SummDolg, tblOcenka.SummNalVsego, tblOcenka.DateDogovor, tblOcenka.Sobitie1, tblOcenka.Buhgalteru, tblOcenka.DateAct, tblMemorandum.Vozvrat AS VozvratCalc, tblMemorandum.OtKogoVozvrat AS OtKogoVozvratCalc, tblMemorandum.OtKogo AS OtKogoCalc2, tblOcenka.SummVozvrat2, (summnalvsego+stoimostdog+stoimostschet-summvozvrat)*otkogoVozvratCalc AS Field10Calc, (summnalvsego+stoimostdog+stoimostschet)*VozvratCalc AS Field11Calc, tblOcenka.SummRecenziya, tblOcenka.DateVozvrat, tblOcenka.DateVozvrat2, tblMain.Napravlenie AS NapravlenieCalc, tblOcenka.TypeObject, tblOcenka.AdressObject, tblOcenka.Region, tblOcenka.KomuFIO, tblOcenka.ShortFio, tblOcenka.Field12, tblOcenka.DateOcenku, tblOcenka.CelevoeNaznach, tblOcenka.KadastrNomer, tblOcenka.PloschadZemli, tblOcenka.Kolvoobjekt, tblOcenka.Kolvoskoef, tblOcenka.OtdachaFin, tblOcenka.Primechanie, tblOcenka.OkpoKontr, tblOcenka.PoluchenoRM, tblOcenka.PoluchnaKartu, tblOcenka.BeznalRs, tblOcenka.SoderzhOperac, tblOcenka.UchastieOp, tblOcenka.Process, SummDolg-StoimostSchet-StoimostDog-SummNalVsego-SummRecenziya AS DolgCalc, tblOcenka.Partner, tblOcenka.OplPartner
FROM (tblOcenka LEFT JOIN tblMain ON tblOcenka.ClientID = tblMain.ID) LEFT JOIN tblMemorandum ON tblOcenka.ClientID = tblMemorandum.ClientID;
...
Рейтинг: 0 / 0
16.08.2016, 15:55
    #39292688
Arhirru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
Сразу уточню, база делалась не мной. Мне просто поставлена задача избавиться от дубляжа записей, появляющегося при добавлении новой.
...
Рейтинг: 0 / 0
16.08.2016, 16:41
    #39292728
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
Ну напостил соплей... трудно было отформатировать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
SELECT tblOcenka.ID
     , tblOcenka.DateZakaz
	 , tblOcenka.ContactZakazchik
	 , tblOcenka.StoimostDog
	 , tblOcenka.Dogovor
	 , tblOcenka.ClientID
	 , tblOcenka.Zakazchik
	 , tblOcenka.TipObecta
	 , tblMain.Client AS OtKogoCalc
	 , tblOcenka.SummVozvrat
	 , tblOcenka.VozvratKomment
	 , tblMain.FIO AS OtKogoFIOCalc
	 , tblOcenka.Sotrudnik
	 , tblOcenka.Status
	 , tblOcenka.DateBezNal
	 , tblOcenka.StoimostSchet
	 , tblOcenka.DataNal
	 , tblOcenka.SummDolg
	 , tblOcenka.SummNalVsego
	 , tblOcenka.DateDogovor
	 , tblOcenka.Sobitie1
	 , tblOcenka.Buhgalteru
	 , tblOcenka.DateAct
	 , tblMemorandum.Vozvrat AS VozvratCalc
	 , tblMemorandum.OtKogoVozvrat AS OtKogoVozvratCalc
	 , tblMemorandum.OtKogo AS OtKogoCalc2
	 , tblOcenka.SummVozvrat2
	 , (summnalvsego+stoimostdog+stoimostschet-summvozvrat)*otkogoVozvratCalc AS Field10Calc
	 , (summnalvsego+stoimostdog+stoimostschet)*VozvratCalc AS Field11Calc
	 , tblOcenka.SummRecenziya
	 , tblOcenka.DateVozvrat
	 , tblOcenka.DateVozvrat2
	 , tblMain.Napravlenie AS NapravlenieCalc
	 , tblOcenka.TypeObject
	 , tblOcenka.AdressObject
	 , tblOcenka.Region
	 , tblOcenka.KomuFIO
	 , tblOcenka.ShortFio
	 , tblOcenka.Field12
	 , tblOcenka.DateOcenku
	 , tblOcenka.CelevoeNaznach
	 , tblOcenka.KadastrNomer
	 , tblOcenka.PloschadZemli
	 , tblOcenka.Kolvoobjekt
	 , tblOcenka.Kolvoskoef
	 , tblOcenka.OtdachaFin
	 , tblOcenka.Primechanie
	 , tblOcenka.OkpoKontr
	 , tblOcenka.PoluchenoRM
	 , tblOcenka.PoluchnaKartu
	 , tblOcenka.BeznalRs
	 , tblOcenka.SoderzhOperac
	 , tblOcenka.UchastieOp
	 , tblOcenka.Process
	 , SummDolg-StoimostSchet-StoimostDog-SummNalVsego-SummRecenziya AS DolgCalc
	 , tblOcenka.Partner
	 , tblOcenka.OplPartner
FROM (    tblOcenka 
LEFT JOIN tblMain ON tblOcenka.ClientID = tblMain.ID) 
LEFT JOIN tblMemorandum ON tblOcenka.ClientID = tblMemorandum.ClientID;


Если при связывании одной записи из tblOcenka соответствуют две или более записей из tblMain и/или tblMemorandum, то появление дубликатов ПО ПОЛЯМ ИЗ ТАБЛИЦЫ tblOcenka - это не просто нормальное, но и обязательное состояние. Но при этом в разных записях-"дубликатах" содержатся РАЗНЫЕ данные, взятые из других таблиц - т.е. полные записи, возвращаемые запросом, дубликатами НЕ ЯВЛЯЮТСЯ. Даже если чисто случайно в полях из остальных таблиц значения в разных записях равны.
И такой результат - ПРАВИЛЬНЫЙ.

Arhirruзадача избавиться от дубляжа записей, появляющегося при добавлении новой
Эммм... что-то про добавление раньше ничего не говорилось... куда, что и как добавляется? и при чём тут "дубликаты в запросе"?
...
Рейтинг: 0 / 0
16.08.2016, 16:51
    #39292741
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
самое первое впечатление - неправильная структура базы. Как следствие - в таблицах избыточность данных, запрос такого же уровня организации, отсюда и косяки. По хорошему - надо переделывать практически всё.
ПыСы: казалось бы - хочешь получить быстрое и полное решение вопроса - дай в архиве сам образец базы: названные три таблицы (как оказалось - всё же три, хотя в первоначальной постановке вопроса речь шла об одной) с несколькими записями (даже вообще левыми), и тогда только сам запрос. Так нет же, обязательно устроить мееееедленный стриптиз с поочерёдным подкидыванием инфы и игрой в угадайку., смотреть на эти 11 строк с названиями полей и виртуально гадать, что там и как - потому как без самих таблиц работу запроса не проверить. А набивать самому таблицы, записи - лень.
...
Рейтинг: 0 / 0
16.08.2016, 16:57
    #39292752
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось?
о, на сцене появился ещё один запрос - на добавление. Стриптиз в разгаре ))) И опять гадания: сказано "при добавлении новой". А точно только один запрос участвует в добавлении? И нет ли к нему "прицепа" в виде, допустим, запросов на обновление, удаление и так далее?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему происходит дубляж записей с одина ID и как сделать, что бы больше не дублировалось? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]