ฉันมี 2 ตารางที่มีโครงสร้างคล้ายกับสิ่งนี้:
ตาราง: ผู้ใช้
สาขา: id, active_office_address_id (อาจเป็น 0)
ตาราง: user_address
ฟิลด์: id, user_id, ประเภท (บ้าน, สำนักงาน)
ผู้ใช้สามารถมีที่อยู่ "บ้าน" (ไม่บังคับ) และมีที่อยู่ "สำนักงาน" ได้หลายรายการ ฉันมีการเข้าร่วมเพื่อรับที่อยู่ผู้ใช้ แต่ฉันต้องการว่าหากผู้ใช้มีที่อยู่ "บ้าน" เพื่อรับที่อยู่นั้น ไม่ใช่ที่อยู่ "สำนักงาน"
ดังนั้น ฉันจะรับที่อยู่ "บ้าน" ได้อย่างไร ถ้ามี และเฉพาะในกรณีที่ไม่มีอยู่เพื่อรับที่อยู่ "สำนักงาน" (ในความเป็นจริงแบบสอบถามมีความซับซ้อนกว่ามากและการรวมเสร็จสิ้นใน 4-5 ตาราง)
SELECT * FROM user LEFT JOIN user_address ON (user.id = address.user_id AND
(user_address.type = "home" OR user.active_office_address_id = user_address.id))
group by user.id