1

私は、人々が企業のいくつかのサービスを選択できる検索フォームを持っています。表は次のとおりです。

ビジネスbusiness_id、business_name

ビジネスデータ

1、プリンス&サン

2、スミス株式会社

3、ブラウンズ

サービスservice_id、service_name

サービスデータ

1、ショットブラスト

2、塗装

3 スチーム洗浄

Business_serviceビジネス ID、サービス ID

1、1

1、2

2、2

3 1

3 2

したがって、ユーザーがショット ブラストなどの 1 つの項目の検索を選択した場合、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

inの代わりに使用できwhere、理想的には"OR"サービス 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 に答える
0

AND の代わりに OR を使用します。AND を使用すると、サービス ID が 1 と 2 である bussines_service が同時に返されます。代わりに、サービス ID = 1 またはサービス ID = 2 を持つ行が必要です

于 2012-09-21T13:37:57.037 に答える