2015-10-14 1 views
0

Мой сотрудник попросил меня о помощи в запросе в MS Access, который объединяет три таблицы. Я подтвердил, что порядок и внутренний/внешний статус JOIN - это то, что хочет мой коллега. (У них есть три таблицы, A, B и C, они нужны все записи из таблицы B плюс совпадающие записи из A и C.)Удаление дублированных записей из JOIN в MS Access

The (дезинфицировать) запрос является:

SELECT B.ID, B.Date from (A RIGHT JOIN B on A.ID = B.ID) LEFT JOIN C on B.ID = C.ID 
GROUP BY B.ID, B.Date 

Это возвращает правильное количество строк (около 16000). Однако, когда я изменяю выбирать и группировать пункты в

SELECT B.ID, B.Date, A.Time ... 
GROUP BY B.ID, B.Date, A.Time 

то запрос возвращает дубликат записи (отсчет записи о 19000). Как улучшить запрос для устранения дубликатов?

This Stack Overflow answer помогли мне выяснить положение GROUP BY для таблицы B. Я попытался оговорку как только GROUP BY B.ID, но получил сообщение об ошибке, что я не сделал какой-либо агрегации с B.Date.

+0

Покажите нам, что вы имеете в виду подвалов? Потому что обычный второй запрос имеет больше записей. Теперь у вас ['d, date]' split into diferent '[time]' –

+0

. Как бы мы ни говорили, результат имеет записи с одинаковыми данными. Я проверю дважды, чтобы подтвердить, что записи идентичны. –

ответ

0

Действительно ли он создает повторяющиеся записи, или он теперь возвращает несколько записей с той же даты, что и в другое время? Если это так, вам нужно будет оценить, действительно ли это дубликаты записей для цели вашего отчета. Если они есть, вы захотите объединить время с чем-то вроде min (a.time) или max (a.time) в предложении select (чтобы получить самый ранний или последний экземпляр) и оставить его вне группы.

+0

Я буду оценивать, содержат ли записи повторяющиеся данные. Ничего похожего сделать. –

+0

НЕТ, записи не дублируются на 100% - одно из полей таблицы A имеет разные данные для нескольких записей, соответствующих одной записи в таблице B. –

Смежные вопросы