我有一个搜索表单,人们可以选择公司的几种服务,表格如下:
商家 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
我知道这很简单,但我似乎无法理解它。
答案 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)