Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   PHP AND OR XOR (https://javascript.ru/forum/server/45008-php-xor.html)

arahmanov 10.02.2014 19:25

PHP AND OR XOR
 
Запутался что то совсем

есть Запрос в базу

"SELECT * FROM sobs WHERE id_kv='$id_kv' AND so='1' AND reg='0' " ;


Нужно:
Выбрать все поля таблицы sobs Где id_kv='$id_kv' и so='1' и reg='0' или gil='1'

Если написать так

"SELECT * FROM sobs WHERE id_kv='$id_kv' AND so='1' AND reg='0'  OR gil='1'" ;

запрос выбирает все поля с gil='1' а мненужно именно либо где gil='1' либо reg='0' но при этом сохранить всеь кусок с AND

Можно обойтись без второго запроса ?

danik.js 10.02.2014 22:52

Цитата:

Сообщение от arahmanov
PHP AND OR XOR

У меня для тебя плохие новости: это не PHP, а SQL :p

А скобки не пробовал ставить? Я чет позабыл SQL..

kostyanet 14.02.2014 10:34

Единственное "или" вернет все что совпадает с этим "или" и скобки не помогут.

danik.js 14.02.2014 10:40

Цитата:

Сообщение от kostyanet
и скобки не помогут

Чет ты гонишь..

id_kv='$id_kv' AND so='1' AND (reg='0' OR gil='1')

А если скобок нет, то по умолчанию оно работает так:

(id_kv='$id_kv' AND so='1' AND reg='0') OR gil='1'

Ибо AND имеет приоритет над OR.

kostyanet 14.02.2014 10:56

Ну вот и вспомнили SQL :)

kostyanet 14.02.2014 10:58

На практике до or не докатывался, но про скобки вспомнил в выражении in

надо попробовать

where in(a, b) and c and d;

пишут что in() эквипенисуально or

danik.js 14.02.2014 11:41

Цитата:

Сообщение от kostyanet
пишут что in() эквипенисуально or

Это когда допустимы несколько значений одной колонки, а не разных.
То есть это когда reg = 0 OR reg = 1, то оно заменяемо на reg in (0, 1).
Тут же другая ситуация.

Цитата:

Сообщение от kostyanet
эквипенисуально

Прям так и пишут? В учебниках чтоль?

kostyanet 16.02.2014 23:00

Есть некоторые ещи в sql по которым можно судить о заболевании как по симптомам, или типа признакам хреново спроектированной бд. От нее все начинается.

Так вот среди этих признаков использование таких кляуз и кивордов как NOT EXIST, OR, !=

То есть не вдаваясь в детали уже можно сказать что OR вылезло из того места, о котором было думать лень.

kostyanet 16.02.2014 23:03

То есть мы не можем оценивать организм по одной только фаланге пальца, то есть суть приложения по обрывку запроса. Но если мы видим or то может предполагать что аффтар ниасилил какой-нить group by having


Часовой пояс GMT +3, время: 01:52.