1

IN ORこのselectステートメントを正しく使用するにはどうすればよいですか? ( を除くすべてが実際に機能しますwhere bdt.active='yes')

SELECT bdt.*, specials.*, stars.* 
FROM bdt INNER JOIN specials ON  bdt.id = specials.id 
         INNER JOIN stars ON specials.id=stars.id 
   WHERE bdt.active='yes' 
   AND  bdt.business_type IN ('entertainment') 
    OR  bdt.business_subtype IN  ('entertainment')  
    OR  bdt.subtype2 IN ('entertainment') 
    OR  specials.type IN ('entertainment')
4

2 に答える 2

1

()次のように、2 番目のAND条件で括弧を使用するだけです。

SELECT bdt.*, specials.*, stars.* 
FROM bdt INNER JOIN specials ON  bdt.id = specials.id 
         INNER JOIN stars ON specials.id=stars.id 
   WHERE bdt.active='yes' 
   AND (bdt.business_type IN ('entertainment') 
    OR  bdt.business_subtype IN  ('entertainment')  
    OR  bdt.subtype2 IN ('entertainment') 
    OR  specials.type IN ('entertainment'))
于 2012-10-13T04:32:47.250 に答える
0

スタイルに関する2つの注意事項。

  1. IN複数の選択肢がある場合に使用し=、単一の直接一致に使用します。
  2. SELECT bdt.*, specials.*, stars.*は本当に悪い形です。id結合から、各テーブルにフィールドがあることが明らかです。必要な列のみをリストし、同じ名前の列には異なる別名を付ける必要があります。

ORまた、 ,を使用して節をIN正しく書き直す方法も以下に示します。

SELECT bdt.*, specials.*, stars.* 
FROM bdt INNER JOIN specials ON  bdt.id = specials.id 
         INNER JOIN stars ON specials.id=stars.id 
   WHERE bdt.active='yes' 
   AND  'entertainment' IN (bdt.business_type, bdt.business_subtype,
                            bdt.subtype2, specials.type)
于 2012-10-13T05:37:56.377 に答える