2009-10-06 1 views
0

Table1Сравнить с датой и ID задачи

ID Date Intime Outtime 

A001 20000501 12:00:00 22:00:00 
A001 20000502 14:00:00 22:00:00 
A001 20000503 12:00:00 23:00:00 
A002 20000501 11:00:00 20:00:00 
A002 20000502 13:00:00 21:00:00 

Итак, на ...,

Table2 

ID Date Intime Outtime 

A001 20050501 14:00:00 23:00:00 
A002 20050501 08:00:00 16:00:00 

Из приведенной выше таблицы

Я хочу взять Table1.ID, Table1.Date, Table2. Intime, Table2.Outtime из таблицы 1 Внутренняя таблица Join2 на Table1.ID = Table2.ID и Table1.Date = Table2.Date

Получение дублированного значения val ues

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 

Я попробовал Left outer Присоединиться. Он показывал то же самое. Как сравнить идентификатор и дату.

Нужна помощь по запросу?

+1

Уверены, что у вас есть данные справа? Внутреннее соединение, которое вы описали, не вернет эти результаты из этих данных. Дважды проверьте свои данные (я думаю, что даты в таблице 1 неверны.) –

+0

Дубликат: http: // stackoverflow.com/questions/1525705/compare-with-dates-and-id –

+1

Нет - очень похоже, но это другой вопрос –

ответ

1

Если внутреннее соединение, вы получите только те строки, которые присутствуют в обеих таблицах (с точки зрения их ID и дата):

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' 

Бьюсь вы получаете больше, чем одну строку .....

Марк

Пытаясь объяснить дальше - я до сих пор думаю, что вы» неправильное понимание INNER JOIN или вы пытаетесь достичь чего-то, чего нелегко сделать.

Ваш выход что-то вроде этого:

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 

Если вы действительно получите этот выход из вашей INNER JOIN, то это означает:

  • вам больше всего нравится иметь один ряд с ID=A001 и Date=20000501 в ваша таблица1
  • у вас есть две (или более) строки в таблице 2 с ID=A001 и Date=20000501

Что будет делать INNER JOIN, это объединить строку №1 из таблицы2 с одной строкой из таблицы 1, а затем строку №2 из таблицы2 с одной строкой из таблицы1 и т. Д.

Если у вас есть несколько записей с одинаковыми (ID, дата) значения в Table2, вы будет получить дубликаты с INNER JOIN - это дизайн, и это не ошибка - но именно так, как INNER JOIN работает.