2013-03-06 2 views
0

Мое знание соединения ужасное, я не могу найти правильный вариант для этого. Я хочу присоединиться к двум таблицам на TableA.userID и TableB.otherID, чтобы соответствовать желаемому результату. У меня нет внешних или первичных ключей, установленных на таблицах. Что я должен здесь использовать?Какой тип соединения я должен использовать?

TableA: 
+--------+--------+---------+ 
| userID | field1 | field2 | 
+--------+--------+---------+ 

TableB: 
+--------+----------+---------+---------+---------+ 
| userID | otherID | myData1 | myData2 | myData3 | 
+--------+----------+---------+---------+---------+ 

Desired Output: 
+--------+----------+---------+---------+---------+--------+--------+ 
| userID | otherID | myData1 | myData2 | myData3 | field1 | field2 | 
+--------+----------+---------+---------+---------+--------+--------+ 
+0

Это вопрос NULL. У вас есть NULL userIDs? Если не использовать внутреннее соединение –

ответ

2

Это следует сделать это:

select a.userID, b.otherID, b.myData1, b.myData2, b.myData3, a.field1, a.field1 
from TableA a 
inner join TableB b 
on a.userID = b.otherID 

Я рекомендую добавлять индексы TableA.userID и TableB.otherID.

1

Возможно, я не понимаю вопрос, но не мог бы вы просто использовать простой INNER JOIN, предполагая, что оба USERID и OTHERID являются одним и тем же типом данных, и вам не нужно выполнять какие-либо преобразования данных.

SELECT A.userID, B.otherID, B.myData, B.myData2, B.myData3, A.field1, A.field2 
FROM TableA as A 
     INNER JOIN TableB as B 
     ON A.UserId = B.OtherId 
Смежные вопросы