Điều này hơi phức tạp, nhưng tôi có 2 bảng. Giả sử cấu trúc như thế này:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
Các bảng có thể được nối dựa trên Table1.PhoneNumber1 -> Table2.PhoneNumber hoặc Table1.PhoneNumber2 -> Table2.PhoneNumber.
Bây giờ, tôi muốn nhận tập kết quả chứa PhoneNumber1, SomeOtherField tương ứng với PhoneNumber1, PhoneNumber2 và SomeOtherField tương ứng với PhoneNumber2.
Tôi đã nghĩ ra 2 cách để làm điều này - bằng cách tham gia vào bảng hai lần hoặc bằng cách tham gia một lần với OR trong mệnh đề BẬT.
Phương pháp 1 :
SELECT t1.PhoneNumber1, t1.PhoneNumber2,
t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2
FROM Table1 t1
INNER JOIN Table2 t2
ON t2.PhoneNumber = t1.PhoneNumber1
INNER JOIN Table2 t3
ON t3.PhoneNumber = t1.PhoneNumber2
Điều này có vẻ hiệu quả.
Phương pháp 2 :
Để bằng cách nào đó có một truy vấn trông giống như thế này -
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
Tôi vẫn chưa làm được điều này và tôi không chắc liệu có cách nào để thực hiện nó hay không.
Cách tốt nhất để thực hiện điều này là gì? Không có cách nào có vẻ đơn giản hoặc trực quan ... Có cách nào đơn giản hơn để làm điều này không? Yêu cầu này thường được thực hiện như thế nào?