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 Можно обойтись без второго запроса ? |
Цитата:
А скобки не пробовал ставить? Я чет позабыл SQL.. |
Единственное "или" вернет все что совпадает с этим "или" и скобки не помогут.
|
Цитата:
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. |
Ну вот и вспомнили SQL :)
|
На практике до or не докатывался, но про скобки вспомнил в выражении in
надо попробовать where in(a, b) and c and d; пишут что in() эквипенисуально or |
Цитата:
То есть это когда reg = 0 OR reg = 1, то оно заменяемо на reg in (0, 1). Тут же другая ситуация. Цитата:
|
Есть некоторые ещи в sql по которым можно судить о заболевании как по симптомам, или типа признакам хреново спроектированной бд. От нее все начинается.
Так вот среди этих признаков использование таких кляуз и кивордов как NOT EXIST, OR, != То есть не вдаваясь в детали уже можно сказать что OR вылезло из того места, о котором было думать лень. |
То есть мы не можем оценивать организм по одной только фаланге пальца, то есть суть приложения по обрывку запроса. Но если мы видим or то может предполагать что аффтар ниасилил какой-нить group by having
|
Часовой пояс GMT +3, время: 01:52. |