Узнать какой из OR выполнился

Сенсей

Новичок
Узнать какой из OR выполнился

Например

select count(*) from users_winks where DATE(wink_date)=CURDATE() OR wink_new=1;

Можно ли как то взвращать флаг какой нибудь... который бы указывал... какое из условий сработало?

Просто в зависимости от условия которое сработало мне нужно выводить разный текст...

Разделить это на два запроса - русурсы жалко...
 

Wicked

Новичок
ты планируешь узнавать информацию о каждой записи, при этом имея всего одну запись на выходе?

-~{}~ 27.06.06 22:52:

или тебе нужно получить 2 каунтера:
1) сколько DATE(wink_date)=CURDATE()
2) сколько wink_new=1
?
 

Сенсей

Новичок
Wicked
нет... каунт вернет либо 1 либо 0
Зпись всегда либо есть либо ее нету....

Поный запрос такой:

select count(*) from users_winks where DATE(wink_date)=CURDATE() OR wink_new=1 and (wink_from_user_id=$USER_ID and wink_to_user_id=$to_user_id);

Просто если нашлась запись по DATE(wink_date)=CURDATE() мне нуэжно вывести "Ошибка: сегодня вы уже подмигивали"

А если нашлась запись по wink_new=1 мне нужно вывести "Ошибка: Вы в ожидании просмотра"

-~{}~ 27.06.06 20:00:

Фанат
Я знаю чего я хочу... и пытаюсб это обьяснить...

вот как это выглядит в два запроса

PHP:
$res = sql_query("select count(*) from ".$prefix."_users_winks where user_wink_from_user_id=".USER_ID." and user_wink_to_user_id='".$to_user_id."' and DATE(user_wink_date)=CURDATE()", $dbi);
list($winked_today) = sql_fetch_row($res);
if ($winked_today)
{
	echo "Сегодня вы уже подмигивали! Нельзя больше";
}
else
{
	$res = sql_query("select count(*) from ".$prefix."_users_winks where user_wink_from_user_id=".USER_ID." and user_wink_to_user_id='".$to_user_id."' and user_wink_new=1", $dbi);
	list($wink_new) = sql_fetch_row($res);
         if ($wink_new)
         {
	      echo "Вы уже подмигнули, пользователь еще н обратил на вас внимание...";
          }
}
 

Wicked

Новичок
Разделить это на два запроса - русурсы жалко...
Что-то мне подсказывает, что это будет быстрее, чем делать OR запрос. Именно поэтому не раскрываю решения.
 

Фанат

oncle terrible
Команда форума
а зачем ты делаешь каунт, если вернётся в любом случае только одна запись?
 

Сенсей

Новичок
zerkms
Ну в этой таблице должно быть примерно 50,000 записей...
Не хотелось бы из за ерунды напрягать мускул... хотя запросы вроде простые...

В любом случае.. если нет простого решения с одним запросом... буду юзать два... просто подумал вдруг есть что то...

-~{}~ 27.06.06 20:12:

Фанат
А что мне делать.. если мне никакая другая инфа в таблицы не нужна? Просто выбирать любое поле?
 

Фанат

oncle terrible
Команда форума
КАК ЭТО НЕ НУЖНА???
ты только что САМ ПИСАЛ, ЧТО НУЖНА!!!
 

voituk

прозревший
В запросе устанавливай ещё некий флаг
[sql]SELECT IF(wink_new=1, 1, 0) AS is_wink_new ....[/sql]

Хотя если в результате однозначно будет либо 1 запись либо 0 то выбирай всю строку результата и проверяй отдельно каждое из 2-х условий.

а зачем ты делаешь каунт, если вернётся в любом случае только одна запись?
Фанат
Очень верно подметил, особенно в разрезе фразы
:)
 

Сенсей

Новичок
Вот я дурак.. не в ту степь полез...

так как запись либо существует либо нет - просто выберу данные и все..

PHP:
	$res = sql_query("select wink_new, IF(DATE(wink_date)=CURDATE(), 1,0) as winked_today from ".$prefix."_users_winks where wink_from_user_id=".USER_ID." and wink_to_user_id=".$to_user_id."", $dbi);
	list($wink_new, $winked_today) = sql_fetch_row($res);
Всем спасибо :)
 
Сверху