Присоединитесь к двум таблицам и получите вывод из обоих [дубликат]
Possible Duplicate:
SQL Query JOIN with Table
Если это данные в TestingTable1
BUYER_ID | ITEM_ID | CREATED_TIME
----------+-----------------+----------------------
1345653 151851771618 2012-07-09 19:57:33
1345653 110909316904 2012-07-09 21:29:06
1345653 221065796761 2012-07-09 19:31:48
И если это ниже данные в TestingTable2
USER_ID | PRODUCT_ID | LAST_TIME
---------+----------------+-----------------------
1345653 150851771618 2012-07-09 19:57:33
1345653 110909316904 2012-07-09 22:29:06
1345653 221165796761 2012-07-09 12:31:48
Мне нужно сравнитьTestingTable2
сTestingTable1
наBUYER_ID
а такжеUSER_ID
, Мне нужно посмотреть, еслиBUYER_ID
а такжеUSER_ID
сопоставляется, то мне нужно сравнитьITEM_ID
сPRODUCT_ID
а такжеCREATED_TIME
сLAST_TIME
и если есть несоответствие вTestingTable2
после сравнения сTestingTable1
либо в одном из них, либо в обоих, мне нужно показать результат.
Итак, если вы посмотрите на приведенный выше пример - у меня есть три сценария в основном
Firstly- InTestingTable1
, in the First row ITEM_ID
is not matching with PRODUCT_ID
in the First row of TestingTable2
but CREATED_TIME
is matching with LAST_TIME
for the first row in both the tables
Secondly- In TestingTable1
, in the Second row CREATED_TIME
is not matching with LAST_TIME
in the second row of TestingTable2
but ITEM_ID
is matching with PRODUCT_ID
for the second row in both the tables
Thirdly- In TestingTable1
, in the Third row ITEM_ID
is not matching with PRODUCT_ID
and also CREATED_TIME
is not matching with LAST_TIME
, so in the third row BOTH of them does not match with TestingTable1
third row.
Итак, это три случая, которые мне нужно охватить при сравненииTestingTable2
сTestingTable1
всегда. А такжеTestingTable1
является основной таблицей, через которую всегда нужно проводить сравнения, поэтому это означает, что данные вTestingTable1
всегда точно.
Поэтому мне нужно показать такой результат, учитывая приведенный выше пример, если он не соответствует ни одному из них, ни обоимTestingTable1
данные затем рядом с ним жеTestingTable2
данные, чтобы я мог видеть, какое значение было вTestingTable1
по сравнению сTestingTable2
BUYER_ID | ITEM_ID | CREATED_TIME | USER_ID | PRODUCT_ID | LAST_TIME
-----------+-----------------+---------------------------+----------------+--------------------+-----------------------
1345653 151851771618 2012-07-09 19:57:33 1345653 150851771618 2012-07-09 19:57:33
1345653 110909316904 2012-07-09 21:29:06 1345653 110909316904 2012-07-09 22:29:06
1345653 221065796761 2012-07-09 19:31:48 1345653 221165796761 2012-07-09 12:31:48
Итак, я написал запрос, я думал, что он охватит все мои три сценария, но только он покрылFirst Two
неThird One
, И я не понимаю, сможем ли мы достичь этого третьего сценария или нет?
SELECT *
FROM(
SELECT *
FROM TestingTable1 A
JOIN TestingTable2 B ON A.BUYER_ID = B.USER_ID AND B.LAST_TIME = A.Created_TIME
WHERE B.PRODUCTID <> A.ITEM_ID
UNION ALL
SELECT *
FROM TestingTable1 A
INNER JOIN TestingTable2 B ON A.BUYER_ID = B.USER_ID AND B.PRODUCTID = A.ITEM_ID
WHERE B.t1time <> A.Created_TIME
) X
Любые предложения будут оценены.
Update:-
Просто быстрое обновление того, что я изначально хотел сделать. Как я знал о нескольких проблемах с моим третьим сценарием.
Прежде всего вTestingTable1
Я сортирую (ORDER BY) таблицу поBUYER_ID
а такжеCREATED_TIME
и то же самое сTestingTable2
Я сортирую сUSER_ID
а такжеLAST_TIME
и я делаю сравнение, убедившись, что данные принадлежатBUYER_ID
а такжеUSER_ID
в данный день.