1

我有一个搜索表格,人们可以在其中选择公司的多项服务,表格如下:

企业business_id、business_name

业务数据

1、王子父子

2、史密斯有限公司

3、布朗队

服务service_id、service_name

服务数据

1、抛丸清理

2、绘画

3 蒸汽清洗

业务_服务业务_id, service_id

1, 1

1, 2

2, 2

3 1

3 2

因此,如果用户选择搜索一项,例如 Shot Blasting,则 sql 将是:

Select * FROM business 
Inner Join business_service On business_service.business_id  = business.business_id  
Inner Join service On service.service_id  = business_service.service_id 
WHERE business_service.service_id = 1 

哪个工作正常,但如果用户搜索提供“喷丸”和“绘画”的企业,我希望他们看到 business_id 1 和 3。我知道下面的 sql 不起作用,但我想我会显示我在哪里不得不这样做。

Select * FROM business 
Inner Join business_service On business_service.business_id  = business.business_id  
Inner Join service On service.service_id  = business_service.service_id 
WHERE business_service.service_id = 1 And business_service.service_id = 2

我知道这真的很简单,但我似乎无法理解它。

4

3 回答 3

0

你可以使用IN

Select * FROM business 
Inner Join business_service On business_service.business_id  = business.business_id  
Inner Join service On service.service_id  = business_service.service_id 
WHERE service.service_id IN (1, 3)
于 2012-09-21T13:40:14.393 回答
0

使用 OR 代替 AND。使用 AND 表示返回 bussines_service,其中服务 ID 同时为 1 和 2。相反,您想要服务 id = 1 或服务 id = 2 的行

于 2012-09-21T13:37:57.037 回答
0

您可以使用in,而不是where理想情况下,您应该有"OR"service id 1 或 2 的条件。你查询会是这样的

 Select * FROM business 
Inner Join business_service On business_service.business_id  = business.business_id  
Inner Join service On service.service_id  = business_service.service_id 
WHERE business_service.service_id in (1,2)
于 2012-09-21T13:41:04.187 回答