按国家/地区城市州区搜索用户

时间:2016-11-25 18:29:36

标签: java mysql hibernate

spring和mysql我在mysql Country State,City,District和Lawyer 表中有表。现在用户可以通过在UI场景中提供标签进行搜索

1->用户可以按地区搜索律师

2->用户可以按城市搜索律师

3→ USer可以按州搜索律师,

4-> USer可以按国家/地区搜索律师

5->用户可以按州,市和区搜索律师

6->用户可以通过州和城市搜索律师

7 - >用户可以提供所有四种更精细的粒度搜索

为了有效和快速搜索与律师和所有四个表国家,州,市和区的表关系是什么

我已经为国家,州,市和区制作了一张表,其中包含以下关系 国家---一对多---------国家--------对许多人 - 城市------------对很多人------ -----区

但是现在我想与律师表建立关系,所以如果有人想要搜索律师的名字或任何来自上面的搜索标准,我将能够通过查询表快速给予优化结果。

我应该再创建一个包含lawyerid,stateId,countryId,cityid和districtId的表吗?

1 个答案:

答案 0 :(得分:0)

我建议您创建五个表。

带主键的区域。

带有主键和城区参考(外键)的城市。

使用主键和城市的引用(外键)说明。

具有主键和国家的引用(外键)的国家/地区。

一名律师,主要钥匙和国家,州,市和区的参考书(外键)。

在搜索过程中,您将创建一个简单快速的LEFT JOIN:

SELECT lawyer.name, lawyer.data
FROM lawyer
LEFT JOIN country ON lawyer.country_id = country.id
WHERE country.name = "USA";

或更多compex查询:

SELECT lawyer.name, lawyer.data
FROM lawyer
LEFT JOIN ON state lawyer.state_id = state.id
LEFT JOIN ON city lawyer.city_id = city.id
LEFT JOIN district lawyer.district_id ON = district.id
WHERE STATE_NAME = "Alabama"
                AND city.name = "Birmingham"
                AND district.name = "Northern";

其他人会以类似方式出现,具体取决于查询。

它应该是可以接受的快速。