powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / if else в запросе
7 сообщений из 7, страница 1 из 1
if else в запросе
    #39635727
Zaifat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Помогите с запросом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
	
	SELECT 
		*
	FROM 
		post
	WHERE 
		eventdate <= '{$nextdate}' + INTERVAL 1 DAY AND 
		eventdate > '" . date('Y-m-d') . "' AND 
		eventdate_end < '" . date('Y-m-d') . "'



нужно чтоб WHERE eventdate_end < '" . date('Y-m-d') . "' отрабатывал когда он не равен 0000-00-00 00:00:00 а когда равен он вообще не отрабатывал в php выглядит так

Код: php
1.
2.
if(eventdate_end != '0000-00-00 00:00:00') AND $where = eventdate_end < '" . date('Y-m-d') . "' 
else ' '



но как это делать в sql запросе не совсем понимаю

заранее спасибо
...
Рейтинг: 0 / 0
if else в запросе
    #39635765
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaifat,

Секция WHERE в запросе не может отрабатывать или не отрабатывать.
Она вычисляет логическое выражение для каждой записи, полученной на этапе FROM.
Т.е. вам нужно составить такое выражение, чтобы для нужных записей оно в результате давало истину.

Если в какой-то записи eventdate_end= '0000-00-00 00:00:00', то такая запись должна попасть в результат или не должна?
...
Рейтинг: 0 / 0
if else в запросе
    #39635776
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaifatнужно чтоб WHERE eventdate_end < '" . date('Y-m-d') . "' отрабатывал когда он не равен 0000-00-00 00:00:00 а когда равен он вообще не отрабатывалНу так и напиши два сравнения, объедини их через OR и обрами скобками для определённости вычисления.
...
Рейтинг: 0 / 0
if else в запросе
    #39636004
Zaifat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

нужно чтоб если eventdate_end= '0000-00-00 00:00:00', то выборка по этому параметру вообще не осуществлялась, а если не равно 0000-00-00 00:00:00, то шла выборка и по этому параметру тоже



авторЕсли в какой-то записи eventdate_end= '0000-00-00 00:00:00', то такая запись должна попасть в результат или не должна?

а том то и дело, не должна вообще выборка идти по этому параметру если eventdate_end= '0000-00-00 00:00:00'
я видел в sql если аналоги is else, но не совсем понял как их применить в данной ситуации
...
Рейтинг: 0 / 0
if else в запросе
    #39636017
Zaifat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНу так и напиши два сравнения, объедини их через OR и обрами скобками для определённости вычисления.

можно конечно вот так сделать

Код: plsql
1.
(eventdate_end = '0000-00-00 00:00:00' OR eventdate_end < '" . date('Y-m-d') . "')



но мне кажется это не очень правильно
...
Рейтинг: 0 / 0
if else в запросе
    #39636071
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaifat,

Поменять
Код: sql
1.
'0000-00-00 00:00:00'

на NULL ?
...
Рейтинг: 0 / 0
if else в запросе
    #39636195
A-MaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zaifat
нужно чтоб если eventdate_end= '0000-00-00 00:00:00', то выборка по этому параметру вообще не осуществлялась, а если не равно 0000-00-00 00:00:00, то шла выборка и по этому параметру тоже

Что-то типа такого что ли нужно?
Код: sql
1.
2.
3.
4.
where
  <условие1> and
  <условие2> and
  IF(eventdate_end = '0000-00-00 00:00:00', date('Y-m-d') - interval 1 day, eventdate_end) < date('Y-m-d') 


т.е. когда eventdate_end = '0000-00-00 00:00:00', то задаем заведомо выполняемое условие date('Y-m-d') - interval 1 day < date('Y-m-d'), а если нет - сравниваем собственно eventdate_end
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / if else в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]