我的数据库中有四个表:
客户
客户包含名为zipcode
的字段,例如:1234AB
用户
用户包含字段user_id
区域
区域是一系列zipcodes,例如:1000到2000.字段称为zipcode_from
和zipcode to
users_regions
此表将用户与区域和字段相关联:id
,user_id
,region_id
。
用户可以连接到users_regions
表中的多个区域。
我正在尝试选择用户所连接区域中可用的所有客户。我遇到的问题是用户可以连接到多个区域,否则我可以轻松地执行以下操作:
SELECT c.*
, ur.*
FROM customers c
LEFT
JOIN users a
ON a.id = c.advisor_id
LEFT
JOIN users_regions ur
ON c.region_id = ur.region_id
WHERE ur.user_id = 1
HAVING ur.zipcode_from > c.zipcode
AND ur.zipcode_to < c.zipcode
(未经测试,可能是错误的)
如何使用单个查询实现此目的?
答案 0 :(得分:-1)
尝试:
SELECT *
FROM customers c , users a, users_regions ur
Where a.id = c.advisor_id
AND c.region_id = ur.region_id
AND ur.user_id = 1
HAVING ur.zipcode_from > c.zipcode
AND ur.zipcode_to < c.zipcode