SQL选择邮政编码范围

时间:2017-12-28 14:19:54

标签: mysql

我的数据库中有四个表:

客户 客户包含名为zipcode的字段,例如:1234AB

用户 用户包含字段user_id

区域 区域是一系列zipcodes,例如:1000到2000.字段称为zipcode_fromzipcode to

users_regions 此表将用户与区域和字段相关联:iduser_idregion_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

(未经测试,可能是错误的)

如何使用单个查询实现此目的?

1 个答案:

答案 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