还是不对,我查询的时候不会带区域名称,而是选择相应区域范围,这个区域返回是一个数组
时间: 2023-11-27 18:03:57 浏览: 109
搜索区域选择
非常抱歉,我理解有误。针对您的需求,您可以这样设计数据表:
1. 公司表(company)
- id:公司id
- name:公司名称
- ...
2. 区域表(region)
- id:区域id
- name:区域名称
- level:区域级别(1:省份,2:城市,3:区/县)
- parent_id:父级区域id
3. 公司区域表(company_region)
- company_id:公司id
- region_id:区域id
4. 区域关系表(region_relation)
- id:关系id
- region_id:区域id
- parent_id:父级关系id(如果该区域是省份,则父级关系id为0)
其中,公司表存储公司信息,区域表存储省市区信息,公司区域表存储公司和区域的关联关系,区域关系表用于存储区域之间的关系。当用户填写供应区域时,根据选择的区域,向公司区域表中插入对应的记录,并且向区域关系表中插入对应的关系记录。
当需要根据供应商区域筛选出对应的公司时,可以使用如下 SQL 查询语句:
```
SELECT c.*
FROM company c
INNER JOIN company_region cr ON c.id = cr.company_id
WHERE cr.region_id IN (
SELECT r.id
FROM region r
INNER JOIN region_relation rr ON r.id = rr.region_id
WHERE r.level = 1 -- 选择的区域级别
AND r.name IN ('省份A', '省份B') -- 选择的区域名称
)
```
以上 SQL 查询语句会先根据选择的区域名称找到对应的区域信息,然后再根据公司区域表找到对应的公司信息。如果您需要多选,则可以将上述查询语句中的 IN 改为 OR,并且可以根据具体需求调整查询条件。
阅读全文