2016-12-20 3 views
0

У меня есть две таблицы в Access, одна из которых содержит идентификаторы (не уникальные), а некоторые имена и один содержат идентификаторы (не уникальные) и местоположение. Я хотел бы вернуть третью таблицу, содержащую только идентификаторы элементов, которые появляются более одного раза в именах или местоположении.Подключить таблицу к счету

Таблица 1

ID Name 
1  Max 
1  Bob 
2  Jack 

Таблица 2

ID Location 
1 A 
2 B 

В основном в этой установке она должна возвращать только ID 1, поскольку 1 дважды появляется в таблице 1:

ID 
1 

Я попытался сделать JOIN на таблицах, а затем применить COUNT, но ничего не вышло.

Заранее благодарен!

ответ

0

Вот один метод, который я думаю, что будет работать в MS Access:

(select id 
from table1 
group by id 
having count(*) > 1 
) union -- note: NOT union all 
(select id 
from table2 
group by id 
having count(*) > 1 
); 

MS Access не позволяет union/union all в from статья. Он также не поддерживает full outer join. Обратите внимание: union удалит дубликаты.

+0

Это сработало отлично! Благодаря! – Batmax

0

Simple Group By и Имея положение должно помочь вам

select ID  
From Table1 
Group by ID  
having count(1)>1 
union 
select ID  
From Table2 
Group by ID  
having count(1)>1 
-1

Не уверен, что я понимаю, что вопрос вы уже пробовали, но это должно работать:

select table1.ID 
    from table1 inner join table2 on table1.id = table2.id 
group by table1.ID 
having count(*) > 1 

Или если у вас есть идентификаторы в одной таблице, но не другой

select table1.ID 
    from table1 full outer join table2 on table1.id = table2.id 
group by table1.ID 
having count(*) > 1 
+0

Этот подход предполагает, что все идентификаторы находятся в обеих таблицах. –

+0

Предположение разумно, учитывая информацию в вопросе, но нормально ... исправлено. –

0

На основании вашего описания, вам не нужно присоединяться к таблицам, чтобы найти дубликаты записей, если ваша таблица - то, что вы указали выше, просто используйте:

With A as ( select ID,count(*) as Times From table group by ID ) select * From A where A.Times>1

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