链接表上的Mysql查询

时间:2012-09-21 13:33:46

标签: mysql

我有一个搜索表单,人们可以选择公司的几种服务,表格如下:

商家 business_id,business_name

商家数据

普林斯& amp;儿子

2,Smith Ltd

3,布朗斯

服务 service_id,service_name

服务数据

1,抛丸清理

2,绘画

3蒸汽清洁

Business_service business_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 

哪个工作正常,但是如果用户搜索提供“Shot Blasting”和“Painting”的业务我希望他们看到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

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

3 个答案:

答案 0 :(得分:0)

使用OR而不是AND。使用AND表示返回bussines_service,其中service id同时为1和2。相反,您需要具有服务ID = 1或服务ID = 2

的行

答案 1 :(得分: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)

答案 2 :(得分:0)

您可以使用in代替where,理想情况下,您应该为服务ID 1或2设置"OR"条件。你查询会像

 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)