2011-12-22 37 views
22

bu MySQL Sorgu Kontrol dışarı ve o zaman ben gerçekten ne yapmak istediğinizi size göstereceğim ...MySQL "Ya da" Koşul

mysql_query(" 
SELECT * FROM Drinks WHERE 
    email='$Email' 
    AND date='$Date_Today' 
    OR date='$Date_Yesterday' 
    OR date='$Date_TwoDaysAgo' 
    OR date='$Date_ThreeDaysAgo' 
    OR date='$Date_FourDaysAgo' 
    OR date='$Date_FiveDaysAgo' 
    OR date='$Date_SixDaysAgo' 
    OR date='$Date_SevenDaysAgo'"); 
onunla Sorun her zaman eşleştirmek istediğiniz olmasıdır

e-posta. Bu durumda (örneğin) tarih $Date_SixDaysAgo'a eşitse, $Email e-posta sütununa eşit olmasa bile sorgudan seçilecektir.

Kısacası, e-postanın her zaman e-posta sütununa eşit olmasını istiyorum ve sorgu $Daye_TwoDaysAgo veya vb. Gibi bir tarihe sahipse, ancak e-postaya eşit değil, sonra çekmeyin. .. gruba VEYA açıklamalara

mysql_query(" 
    SELECT * FROM Drinks WHERE 
    email='$Email' 
    AND date='$Date_Today 
    || $Date_Yesterday 
    || $Date_TwoDaysAgo 
    || $Date_ThreeDaysAgo 
    || $Date_FourDaysAgo 
    || $Date_FiveDaysAgo 
    || $Date_SixDaysAgo 
    || $Date_SevenDaysAgo'"); 
+1

parantez arkadaşınız vardır gibi olmak Gözat deneyin! – ChelseaStats

cevap

48

Kullanım parantez

benim sorgu tür şu şekilde görünecektir tahmin ediyorum, ama bu iş olmaz eminim.

mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND 
    (date='$Date_Today' 
    OR date='$Date_Yesterday' 
    OR date='$Date_TwoDaysAgo' 
    OR date='$Date_ThreeDaysAgo' 
    OR date='$Date_FourDaysAgo' 
    OR date='$Date_FiveDaysAgo' 
    OR date='$Date_SixDaysAgo' 
    OR date='$Date_SevenDaysAgo' 
    ) 
"); 

Ama Alsos IN operatör de bakabilirsiniz olmalıdır:

mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND (date='$Date_Today' OR date='$Date_Yesterday' OR date='$Date_TwoDaysAgo' OR date='$Date_ThreeDaysAgo' OR date='$Date_FourDaysAgo' OR date='$Date_FiveDaysAgo' OR date='$Date_SixDaysAgo' OR date='$Date_SevenDaysAgo')"); 

Ayrıca

mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND date IN ('$Date_Today','$Date_Yesterday','$Date_TwoDaysAgo','$Date_ThreeDaysAgo','$Date_FourDaysAgo','$Date_FiveDaysAgo','$Date_SixDaysAgo','$Date_SevenDaysAgo')"); 
10

Kullanım parantez İÇİNDE kullanabilirsiniz. Yani, "IN" ("$ date1", "$ date2", ...) "

diyebilirsiniz. Ancak, her zaman bir dizi ardışık gününüz varsa, neden

tarih bölümü için aşağıdakileri yapmıyorsunuz?
date <= $Date_Today AND date >= $Date_SevenDaysAgo 
+2

Veya BETWEEN operatörünü kullanın. – liquorvicar

0

böyle parantez içinde vE mantığı sarın:

mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND (date='$Date_Today' OR date='$Date_Yesterday' OR date='$Date_TwoDaysAgo' OR date='$Date_ThreeDaysAgo' OR date='$Date_FourDaysAgo' OR date='$Date_FiveDaysAgo' OR date='$Date_SixDaysAgo' OR date='$Date_SevenDaysAgo')"); 
-4

bu

mysql_query(" 
SELECT * FROM Drinks WHERE 
    email='$Email' 
    AND date='$Date_Today' 
    OR date='$Date_Yesterday', '$Date_TwoDaysAgo', '$Date_ThreeDaysAgo', '$Date_FourDaysAgo', '$Date_FiveDaysAgo', '$Date_SixDaysAgo', '$Date_SevenDaysAgo'"  
    ); 

bu

OR date='$Date_Yesterday' oR '$Date_TwoDaysAgo'......... 
+2

Bu yanıtı silmeyi düşündünüz mü? Kayıp itibarını geri alırsın. –

İlgili konular