Если вы выполните внутреннее объединение, вы получите только те строки, которые присутствуют в обеих таблицах (с точки зрения их идентификатора и даты):
SELECT
Table1.ID, Table1.Date,
Table2.Intime, Table2.Outtime
FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ID AND Table1.Date = Table2.Date
ID Date InTime OutTime
A001 20000501 14:00:00 23:00:00
A002 20050501 08:00:00 16:00:00
Если вы этого не получаете, значит, в ваших данных есть проблема - как я уже упоминал в предыдущем ответе на предыдущий вопрос.
Проверьте вывод этого запроса:
SELECT * FROM Table2 WHERE ID = 'A001' AND Date = '20000501'
Бьюсь об заклад, вы получите более одного ряда .....
Марк
Попытка объяснить дальше - я все еще думаю, что вы неправильно понимаете ВНУТРЕННЕЕ СОЕДИНЕНИЕ или пытаетесь сделать что-то, что на самом деле не может быть легко сделано.
Ваш вывод выглядит примерно так:
ID Date Intime Outtime
A001 20000501 14:00:00 23:00:00
A001 20000501 18:00:00 16:00:00
A002 20000501 14:00:00 23:00:00
A002 20000501 18:00:00 16:00:00
Если вы действительно получаете этот вывод из вашего ВНУТРЕННЕГО СОЕДИНЕНИЯ, то это означает:
- вам больше всего нравится иметь одну строку с
ID=A001
и Date=20000501
в вашей таблице1
- у вас есть две (или более) строки в вашей таблице 2 с
ID=A001
и Date=20000501
ВНУТРЕННЕЕ СОЕДИНЕНИЕ будет объединять строку № 1 из таблицы 2 с одной строкой из таблицы 1, а затем строку № 2 из таблицы 2 с одной строкой из таблицы 1 и т. Д.
Если у вас есть несколько записей с одинаковыми значениями (ID, дата) в таблице 2, вы получите дубликаты с INNER JOIN - это не является ошибкой, а только способом ВНУТРЕННЕЕ СОЕДИНЕНИЕ работает.