Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Исчезают строки / 12 сообщений из 12, страница 1 из 1
24.06.2016, 08:57
    #39261518
SQL_ERR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исчезают строки
Добрый день! Подскажите, пожалуйста, почему при таком условии исчезают также и строки, в которых v1 = null. Их как-то можно оставить, ведь мне надо исключить только 2 конкретные строки, где v1 != 864?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select * from
(
    select 564 v1, 0 v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select null v1, 7 v2, 2 v3, 4 v4 from dual
    union all
    select 864 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select null v1, null v2, 2 v3, 4 v4 from dual
    union all
    select 864 v1, 5 v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, 9 v2, 2 v3, 4 v4 from dual
)
where v1 != 864
...
Рейтинг: 0 / 0
24.06.2016, 09:08
    #39261522
Исчезают строки
SQL_ERR,

потому что значение поля/выражения на [не]равенство NULL проверить можно только при помощи спец.оператора - IS [NOT] NULL.
...
Рейтинг: 0 / 0
24.06.2016, 09:13
    #39261527
SQL_ERR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исчезают строки
Добрый Э - ЭхSQL_ERR,

потому что значение поля/выражения на [не]равенство NULL проверить можно только при помощи спец.оператора - IS [NOT] NULL.

Поэтому эти строки просто игнорируются? А как можно построить условие, при котором бы они сохранялись в выборке, не подскажете?
...
Рейтинг: 0 / 0
24.06.2016, 09:32
    #39261542
Исчезают строки
SQL_ERR,

они не игнорируются! Они отсекаются твоим условием v1 != 864 !
Ибо для полей со значением NULL условие примеn вид NULL != 864. И результат этого сравнени будет ни TRUE, ни FALSE, а UNKNOWN.
А так как в результат попадают только строки, выдающие в результате сравнение TRUE, то NULL-ы благополучно не пройдут этот фильтр.
Чтобы заработало, можно изменить условия на такое:

v1 != 864 OR v1 IS NULL
...
Рейтинг: 0 / 0
24.06.2016, 10:03
    #39261570
SQL_ERR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исчезают строки
Добрый Э - ЭхSQL_ERR,

они не игнорируются! Они отсекаются твоим условием v1 != 864 !
Ибо для полей со значением NULL условие примеn вид NULL != 864 . И результат этого сравнени будет ни TRUE, ни FALSE, а UNKNOWN.
А так как в результат попадают только строки, выдающие в результате сравнение TRUE, то NULL-ы благополучно не пройдут этот фильтр.
Чтобы заработало, можно изменить условия на такое:

v1 != 864 OR v1 IS NULL

Точно! Дошло!
Спасибо огромное, действительно помогли ))
...
Рейтинг: 0 / 0
24.06.2016, 10:59
    #39261610
SQL_ERR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исчезают строки
А не подскажете еще, если не сложно, каким образом можно включать\выключать это условие в зависимости от параметра? То есть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select * from
(
    select 564 v1, 0 v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select null v1, 7 v2, 2 v3, 4 v4 from dual
    union all
    select 864 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select null v1, null v2, 2 v3, 4 v4 from dual
    union all
    select 864 v1, 5 v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, 9 v2, 2 v3, 4 v4 from dual
)
where (v1 != 864 or v1 is null and 1 = 1 /* 0 = 1 */)



где первая 1 - параметр, а вторая - значение (учитывать условие, если истинно (1=1) и игнорировать условие, если выражение ложно (0 = 1)). Такое вообще возможно сделать в условии запроса?

П.С.: Извините за нубство, я только начинаю осваивать все прелести SQL и по учебникам не все понятно ))
...
Рейтинг: 0 / 0
24.06.2016, 11:23
    #39261629
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исчезают строки
Нет. Вы пытаетесь ездить на квадратных колёсах. Расскажите лучше, зачем вам велосипед :)
...
Рейтинг: 0 / 0
24.06.2016, 11:25
    #39261631
Исчезают строки
SQL_ERR,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select * from
(
    select 564 v1, 0 v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select null v1, 7 v2, 2 v3, 4 v4 from dual
    union all
    select 864 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select null v1, null v2, 2 v3, 4 v4 from dual
    union all
    select 864 v1, 5 v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, null v2, 2 v3, 4 v4 from dual
    union all
    select 564 v1, 9 v2, 2 v3, 4 v4 from dual
)
where (v1 != 864 or v1 is null) and :x_parameter = 1
   or :x_parameter = 0
...
Рейтинг: 0 / 0
24.06.2016, 11:28
    #39261633
SQL_ERR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исчезают строки
tanglirНет. Вы пытаетесь ездить на квадратных колёсах. Расскажите лучше, зачем вам велосипед :)

Какой велосипед? Вы видите в моем вопросе что-то странное?
...
Рейтинг: 0 / 0
24.06.2016, 11:34
    #39261647
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исчезают строки
SQL_ERR, только посмотрев на решение Э-Эха я понял, чего вы хотели. Я понимал это совсем по-другому.
...
Рейтинг: 0 / 0
24.06.2016, 11:40
    #39261654
Исчезают строки
tanglir,

иногда ТС так задают вопросы, что без хрустального шара, кофейной гущи и карт Таро сама Баба Ванга не догадалась бы, чего же в итоге требуется
...
Рейтинг: 0 / 0
24.06.2016, 14:06
    #39261805
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исчезают строки
Да ну, тут и без хрустального шара ясно, что это 100501-й вопрос "как бы сделать так, чтобы не делать два разных запроса, ибо лень, а тормоза - пусть будут".
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Исчезают строки / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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