ซับซ้อนนิดหน่อย แต่ฉันมี 2 ตาราง สมมติว่าโครงสร้างเป็นดังนี้:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
สามารถรวมตารางได้ตาม Table1.PhoneNumber1 -> Table2PhoneNumber หรือ Table1.PhoneNumber2 -> Table2.PhoneNumber
ตอนนี้ฉันต้องการรับชุดผลลัพธ์ที่มี PhoneNumber1, SomeOtherField ที่สอดคล้องกับ PhoneNumber1, PhoneNumber2 และ SomeOtherField ที่สอดคล้องกับ PhoneNumber2
ฉันคิด 2 วิธีในการทำสิ่งนี้ - ไม่ว่าจะโดยการเข้าร่วมบนโต๊ะสองครั้งหรือโดยการเข้าร่วมครั้งเดียวด้วย OR ในส่วนคำสั่ง ON
วิธีที่ 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
ดูเหมือนว่าจะได้ผล
วิธีที่ 2 :
มีข้อความค้นหาที่มีลักษณะเช่นนี้ -
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
ฉันยังไม่ได้ทำงานนี้และไม่แน่ใจว่ามีวิธีทำหรือไม่
อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้ ดูเหมือนจะไม่ง่ายหรือใช้งานง่าย ... มีวิธีที่ตรงไปตรงมามากกว่านี้ไหม? ข้อกำหนดนี้ถูกนำไปใช้โดยทั่วไปอย่างไร?