Select and Like построение запроса

KrotAnn

Новичок
Select and Like построение запроса

Есть такой запрос. Он выбирает всё правильно по переменной $time, но совершенно игнорирует $state.
Поле state varchar.
Помогите исправить ошибку....

PHP:
$request="SELECT * FROM ".$doctable." WHERE  ((sthh<'$time')  AND  ('$time'<insthh))
 OR (('$time'>inenhh)  AND ('$time'<enhh) 
AND (state='$state'))";
 

white phoenix

Новичок
Что значит игнорирует `state`?
Советую оформить запрос по форме, а не как попало.
 

KrotAnn

Новичок
Т.е. он выбирает всех и тех у кого state совпадает и всех остальных. Но вот по переменной $time выбирает правильно.
 

Фанат

oncle terrible
Команда форума
KrotAnn
для начала приведи здесь SQL запрос, а не пхп код
 

KrotAnn

Новичок
Автор оригинала: Фанат
KrotAnn
для начала приведи здесь SQL запрос, а не пхп код
PHP:
SELECT * FROM ".$doctable." WHERE  ((sthh<'$time')  AND  ('$time'<insthh))    
OR (('$time'>inenhh)  AND ('$time'<enhh)    AND (state='$state'))
 

Фанат

oncle terrible
Команда форума
это не SQL запрос
это кусок пхп кода.

ты видел когда-нибудь в своей жизни SQL запрос?
 

KrotAnn

Новичок
Автор оригинала: Фанат
это не SQL запрос
это кусок пхп кода.

ты видел когда-нибудь в своей жизни SQL запрос?
Извиняюсь, может так...
PHP:
SELECT * FROM  'doctable'  WHERE  ((sthh<'time')  AND    ('time'<insthh)) 
   OR (('time'>inenhh)  AND ('time'<enhh)    AND (state='state'))
 

Фанат

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

KrotAnn

Новичок
Автор оригинала: Фанат
и что - у тебя, типа, эта галиматья выполняется без ошибок?
Короче я переписала так:
PHP:
SELECT *  FROM `doctor` WHERE 1 AND (`sthh` < 'time' AND `insthh` > 'time')
 AND `day`   LIKE '%mdat%'  AND `state` = '$state'  
 OR (`enhh` > 'time' AND `inenhh` < 'time')
и выборку по переменной state он делает. Подскажите как составить запрос, чтобы он выбирал тех у кого mdat НЕ РАВНО
day через LIKE Где можно почитать об этом.. ?
 

Фанат

oncle terrible
Команда форума
Для начала тебе надо научиться работать с SQL.
Научиться составлять запросы.

Этот код, который ты здесь привела - он СОСТАВЛЯЕТ запрос. Это не готовый запрос. ЭТО в базу НЕ ИДЁТ.
база не понимает всех этих $state и каких-то непонятных time

Повторяю свой вопрос. ты SQL КОГДА-НИБУДЬ в своей жизни видела?

-~{}~ 19.01.06 13:33:

ты сейчас копаешься с программой, которая составляет запрос.
Но сначала тебе надо разобраться с ЗАПРОСОМ.
а потом уже писать программу, которая его составляет.

я понятно говорю?
 

KrotAnn

Новичок
Автор оригинала: Фанат
Для начала тебе надо научиться работать с SQL.
Научиться составлять запросы.

Этот код, который ты здесь привела - он СОСТАВЛЯЕТ запрос. Это не готовый запрос. ЭТО в базу НЕ ИДЁТ.
база не понимает всех этих $state и каких-то непонятных time

Повторяю свой вопрос. ты SQL КОГДА-НИБУДЬ в своей жизни видела?

-~{}~ 19.01.06 13:33:

ты сейчас копаешься с программой, которая составляет запрос.
Но сначала тебе надо разобраться с ЗАПРОСОМ.
а потом уже писать программу, которая его составляет.

я понятно говорю?
Понятно... Так правильно:
PHP:
SELECT *  FROM `doctor` WHERE 1 AND (`sthh` < '12:00' AND `insthh` > '12:00')  
  AND `day`   LIKE '%Friday%'  AND `state` = 'TX'      
OR (`enhh` > '12:00' AND `inenhh` < '12:00')
-~{}~ 19.01.06 13:50:

Автор оригинала: KrotAnn
Понятно... Так правильно:
PHP:
SELECT *  FROM `doctor` WHERE 1 AND (`sthh` < '12:00' AND `insthh` > '12:00')  
  AND `day`   LIKE '%Friday%'  AND `state` = 'TX'      
OR (`enhh` > '12:00' AND `inenhh` < '12:00')
Извините, может я не очень понятно ставлю вопрос. Т.е. надо выбрать всё кроме тех, у кого LIKE '%Friday%' . В таком виде не работает.
 

bkonst

.. хочется странного?...
Написать NOT (`day` LIKE '%Friday%')?

~~~

Поправил забытые скобки...
 

дедушка АУ

Новичок
SELECT * FROM `doctor` WHERE (`sthh` < '12:00' AND `insthh` > '12:00' AND `day` LIKE '%Friday%' AND `state` = 'TX' )
OR (`enhh` > '12:00' AND `inenhh` < '12:00')

думаю стоит группировать условия
 

KrotAnn

Новичок
А можно сделать так чтобы работало быстрее ? Можете способ рассказать ?
 

KrotAnn

Новичок
Автор оригинала: дедушка АУ
KrotAnn
со временем сам поймешь, а пока сильно не заморачивайся
Всё брошу! Уйду в монастырь!!! Не работает код!!!
Привожу пхп код
PHP:
$request= "SELECT *  FROM `doctor` WHERE  
 (NOT `mmdd` LIKE '%$mmdd%')  
  AND (`sthh` < '$time' AND `insthh` > '$time') 
  AND `state` = '$state' OR 
  (`enhh` > '$time' AND `inenhh` < '$time')";
Он теперь вообоще не выбирает ничего! Без NOT LIKE работает нормально и правильно...
Что делать ???
 

KrotAnn

Новичок
Смотрю ... но не вижу...

-~{}~ 19.01.06 17:32:

Автор оригинала: KrotAnn
Смотрю ... но не вижу...
Вижу!!
Всё работает... !
Спасибо всем...!

-~{}~ 19.01.06 17:39:

Можно последний тупой вопрос: Есть столбец mmdd в нём записаны числа просто через запятую так: 1,12,13 Когда выбираю с помощью LIKE (см. выше) то он выбирает и 3 и 13. Как сделать чтобы он выбирал только 3 без 13 или 23 ?
 

Фанат

oncle terrible
Команда форума
find_in_set
а лучше - вообще не писать так ерез запятую
 
Сверху