SQL Внутреннее объединение в MS Access 2007 - PullRequest
0 голосов
/ 17 ноября 2011

У меня проблема с внутренним соединением в базе данных Access. У меня есть две таблицы с двумя столбцами в каждой. один - MID, а другой - DOB в обеих таблицах. Имя первой таблицы является maintable, а другое - under5. Я хочу получить все те записи, которые присутствуют в таблице under5 после сопоставления с maintable, поэтому я использовал Inner join. проблема в том, что существует MID 10106, частота которого в таблице under5 равна 2, а в maintable - 5, но после выполнения запроса число возвращаемых MID (10106) равно 10 (я предполагаю, что ожидаемое поведение должно быть 2), что действительно абсурдно , Пожалуйста, помогите мне решить эту проблему. Это мой запрос:

SELECT maintable.MID, maintable.DOB, Under5.MID, Under5.DOB
FROM under5
INNER JOIN maintable ON under5.MID=maintable.MID;

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Поведение абсолютно хорошее.

Каждая строка в основной таблице будет сопоставляться с каждой строкой во внутренней таблице. Так как в основной таблице 5 строк, а во внутренней таблице две строки 5 * 2 = 10 строк

Can there be any other way so that i could only retrieve those MID and DOB 
that is present in under5 table after matching it with maintable.

попробуйте это

SELECT distinct Under5.MID, Under5.DOB 
FROM under5, MainTable
where under5.mid = mainTable.mid
0 голосов
/ 17 ноября 2011

Вы описываете полусоединение например. попробовать:

SELECT Under5.MID, Under5.DOB
  FROM under5
 WHERE EXISTS (
               SELECT * 
                 FROM maintable 
                WHERE maintable.MID = under5.MID
              );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...