Проверьте этот MySQL
запрос, а затем я покажу вам, что я действительно хочу сделать …
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'");
-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'");
Проблема в том, что я хочу, чтобы он всегда соответствовал электронной почте. В этом случае (например), если дата равна $Date_SixDaysAgo
тогда она будет выбрана из запроса, даже если $Email
не соответствует столбцу электронной почты.
Короче говоря, я хочу, чтобы письмо всегда было равно столбцу электронной почты, и если запрос вытягивает дату, $Daye_TwoDaysAgo
или $Date_ThreeDaysAgo
т. Д., Но не соответствует электронной почте, тогда не тяните ее.
Я предполагаю, что мой запрос будет выглядеть примерно так, но я уверен, что это не сработает.
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'");
-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'");
Используйте скобки для группировки операторов OR.
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')");
Вы также можете использовать IN
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')");
Использовать скобки:
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' ) ");
Но вы должны alsos взглянуть на оператора IN
. Таким образом, вы можете сказать, что suate IN ('$ date1', '$ date2', …) `
Но если у вас всегда есть несколько последовательных дней, почему бы вам не сделать следующее для части даты
date <= $Date_Today AND date >= $Date_SevenDaysAgo
Ваш вопрос касается приоритетов операторов в mysql, и Алекс показал вам, как «переопределить» приоритет с помощью круглых скобок.
Но на стороне примечания, если ваша date
столбца имеет тип Date
вы можете использовать функции даты и времени MySQL для извлечения записей за последние семь дней, например, например,
SELECT * FROM Drinks WHERE email='$Email' AND date >= Now()-Interval 7 day
-SELECT * FROM Drinks WHERE email='$Email' AND date >= Now()-Interval 7 day
(или, может быть, Curdate () вместо Now ())
Оберните логику AND в круглые скобки, например:
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')");
попробуй это
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'" );
-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'" );
я буду таким
OR date='$Date_Yesterday' oR '$Date_TwoDaysAgo'.........