0

短縮したいクエリがあります。

SELECT date1, date2, date3, date4, date5, date6, date7 FROM dates_db 
WHERE date1 =('$date1') OR date1 =('$date2') OR date1=('$date3') 
OR date1=('$date4') OR date1=('$date5') OR date1=('$date6') 
OR date1=('$date7') OR date2 =('$date1') OR date2 =('$date2') 
OR date2=('$date3') OR date2=('$date4') OR date2=('$date5')
OR date2=('$date6') OR date2=('$date7') OR date3 =('$date1') 
OR date3 =('$date2')OR date3=('$date3') OR date3=('$date4') 
OR date3=('$date5') OR date3=('$date6') OR date3=('$date7')

日付 1-7 についても同様です。

このクエリは大規模です。短縮する方法はありますか。これは、別の日のデータ エントリを検索するカレンダー タイプの設計用です。したがって、日付が一致すると、カレンダーに投稿されます。

4

4 に答える 4

3

INこれらの代わりに述語を次ORのように使用できます。

SELECT date1, date2, date3, date4, date5, date6, date7
FROM dates_db 
WHERE date1 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7')
  OR  date2 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7')
  OR  date3 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7')
  ...
于 2012-10-01T11:00:51.303 に答える
2

これを試して、

 SELECT date1, date2, date3, date4, date5, date6, date7 FROM dates_db 
 WHERE date1 IN ('$date1','$date2',...) OR date2 IN('$date1','$date2',...)....

または、

$dates = $date1.",".$date2.",".$date3.",".........;
 SELECT date1, date2, date3, date4, date5, date6, date7 FROM dates_db 
 WHERE date1 IN ('$dates') OR date2 IN('$dates').....
于 2012-10-01T11:03:04.487 に答える
0

多分あなたは使うでしょうIN

SELECT...
FROM...
WHERE   date1 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7') OR
        date2 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7') OR
        date3 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7') 
于 2012-10-01T11:02:13.673 に答える
0

$dateこれは、変数を 1 回だけリストするオプションです。MySQL 構文には、いくつかの変更が必要になる場合があります。

WITH search_dates (date) as (
     values ('$date1'),('$date2'),...
)
SELECT DISTINCT date1, date2, date3, date4, date5, date6, date7 FROM dates_db 
    INNER JOIN search_dates ON 
        date1 = date OR
        date2 = date OR ...
        date7 = date;

理想的な世界では、dates_dbテーブルの構造も異なり、各行には 1 つの日付のみが含まれます。

于 2012-10-01T11:05:48.493 に答える