Как можно иметь дополнительный столбец из каждой таблицы с запросом объединения в MySql? - PullRequest
0 голосов
/ 25 января 2012

У меня есть две таблицы, которые выглядят так:

T1:  T1ID  |  Date  |  Time  | Barcode 
T2:  T2ID  |  Date  |  Time  | Barcode

Я в основном хочу согласовать каждую запись и вернуть T1ID и T2ID, чтобы я знал, что запись T1 совпадает с T2ID.

Результат должен быть таким:

T1ID | T2ID  | Date  | Time  | Barcode

Я сделал бит согласования, но понятия не имею, как мне получить T1ID и T2ID в строке.

Запрос на согласование приведен ниже.

SELECT Date,Time,Barcode
FROM
  ( Select Date  ,Time  ,Barcode  from T1 
    union All 
    Select Date, Time , Barcode from T2 ) as Reconcile 

GROUP BY Date  ,Time  ,Barcode 

Having count(Date) > 1 ;

Кто-нибудь может указать мне правильный путь?

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Я не думаю, что вы ищете "UNION ALL".Это больше похоже на JOIN для меня.

  • Если вам нужно, чтобы записи существовали в ОБАХ таблицах, используйте INNER JOIN (или просто JOIN)
  • Если вам нужна любая запись, которая существует в таблицах EITHER, используйте "CROSS OUTER JOIN"
  • Если вам нужно, чтобы одна из таблиц была" основной таблицей ", используйте" ВЛЕВО "или" ВПРАВО "ВНЕШНЕЕ СОЕДИНЕНИЕ

Примерно так:

SELECT T1ID, T2ID, T1.DATE, T1.DATE, T1.BARCODE
FROM
T1 INNER JOIN T2 ON T1.DATE = T2.DATE AND T1.TIME = T2.TIME AND T1.BARCODE = T2.BARCODE
0 голосов
/ 25 января 2012

Вы можете сделать это либо как объединение, либо как групповое объединение - вот последнее:

SELECT max(T1ID) T1ID, max(T2ID) T2ID, Date, Time, Barcode
FROM
  ( Select T1ID, NULL T2ID, Date, Time, Barcode  from T1 
    union All 
    Select NULL T1ID, T2ID, Date, Time, Barcode from T2 ) as Reconcile 
GROUP BY Date  ,Time  ,Barcode 
Having count(Date) > 1 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...