deimon260993
@deimon260993
Web-программист

Как запросить данные из трех SQL таблиц, исключив при этом дубли?

Добрый день, коллеги! Ситуация такая: Имеется 3 таблицы в БД:
1) NA_ListADM, в ней содержится название (Name) и ОГРН организации.
2) NA_MessagesADM, в данной таблице содержится ID документа (RegNumIndex), а также ОГРН организации, которая его создала
3) Целевая таблица NotarialActs, в ней содержится, дата (DocDate) текст интересующего документа (XML), его наименование (DocName), также рег. номер (RegNumIndex) и прочее.
Суть вопроса следующая, пытаюсь вытащить одним запросом Дату создания документа, его наименование, ОГРН и наименование организации, однако получаю огромную кучу дублей.

Если я использую такой запрос:
SELECT DISTINCT NotarialActs.DocDate, NotarialActs.RegNumIndex, NotarialActs.DocName,
NotarialActs.ActCertifier AS 'UName',NotarialActs.XML AS 'Text'
#, NA_ListADM.OGRN, NA_ListADM.Name
FROM NotarialActs
LEFT JOIN NA_MessagesADM ON NA_MessagesADM.RegNumIndex = NotarialActs.RegNumIndex
LEFT JOIN NA_ListADM ON NA_ListADM.OGRN = NA_MessagesADM.OGRN
WHERE NotarialActs.DocDate LIKE '2020-07%'
AND NotarialActs.DocDate = NA_MessagesADM.DocDate
AND NA_MessagesADM.Status='1'
;


Все отлично. Однако, стоит раскомментировать 3 строчку, в которой я получаю ОГРН и наименование организации, создавшей документ - как тут же появляются 4 лишних дубля. Подскажите, пожалуйста, в чем может быть моя ошибка? Уже 4 часа мучаюсь с данным запросом. Буду благодарен за любую подсказку. Скриншот структуры таблиц также прикладываю.
5f0c6adddfb90711677051.jpeg
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
VicTHOR
@VicTHOR
(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻
SELECT a.DocDate, a.RegNumIndex, a.DocName, a.ActCertifier 'UName', a.XML 'Text' , l.OGRN, l.Name
FROM NA_MessagesADM m
JOIN NotarialActs a
  ON m.RegNumIndex = a.RegNumIndex
JOIN NA_ListADM l
  ON m.OGRN = l.OGRN
WHERE a.DocDate LIKE '2020-07%'
GROUP BY m.RegNumIndex, m.OGRN;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Такое может быть, если в таблице NA_ListADM присутствует несколько записей с одинаковым ОГРН и разными названиями организаций.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы