Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Небольшой вопрос по выборке
Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Есть 6 колонок, кол1, кол2, кол3, кол4, кол5, кол6.
Каким запросом выбрать те строки, где, допустим, не пустые только кол2 и кол3? При
том заранее не известно, кол2 и кол3 это будут или, быть может, кол1 и кол6.
Т.е. выбрать надо строки, где не пусты значение каких либо указанных мной 2 колонок.
Кто поможет с меня либа на пиво (извините вмки пусты).
DeepVarvar
Отправлено: 16 Июля, 2012 - 10:40:27
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Дело другое, если задача состоит в нахождении строк, у которых хотя бы два(при этом любых) поля есть не NULL, и, опять же, это не одно и то же, что задача в нахождении строк, у которых ровно два(и снова - любых) поля есть не NULL.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
alxfro
Отправлено: 16 Июля, 2012 - 10:55:28
Частый гость
Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
EuGen пишет:
Дело другое, если задача состоит в нахождении строк, у которых хотя бы два(при этом любых) поля есть не NULL
В этом и проблема. А еще таких полей может быть не 2, а 3, 4, 5, 6.
tuareg
Отправлено: 16 Июля, 2012 - 11:40:47
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
alxfro пишет:
EuGen пишет:
Дело другое, если задача состоит в нахождении строк, у которых хотя бы два(при этом любых) поля есть не NULL
В этом и проблема. А еще таких полей может быть не 2, а 3, 4, 5, 6.
Вам не кажется, что проще будет при insert/update считать количество полей NULL/не NULL и заносить их в отдельный столбик?
alxfro
Отправлено: 16 Июля, 2012 - 11:49:06
Частый гость
Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
tuareg пишет:
Вам не кажется, что проще будет при insert/update считать количество полей NULL/не NULL и заносить их в отдельный столбик?
Спасибо, решение имеет место быть.
Просто у меня уже есть база, которую надо обработать. Была бы она чистая, другое дело Хотя, никто не мешает мне написать небольшой код которой обновит это значение.
Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Мелкий пишет:
Решить-то можно
CODE (SQL):
скопировать код в буфер обмена
SELECT * FROM `table` WHERE ((`col1` IS NOT NULL) + (`col2` IS NOT NULL) + (`col3` IS NOT NULL))>=2
Вопрос в эффективности.
Гениально.
Почему вы вспомнили про эффективность?
Мелкий
Отправлено: 16 Июля, 2012 - 12:11:24
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Индексы использоваться не могут. Или же я слишком плохого мнения о планировщике
----- PostgreSQL DBA
alxfro
Отправлено: 16 Июля, 2012 - 12:57:17
Частый гость
Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Мелкий пишет:
Индексы использоваться не могут. Или же я слишком плохого мнения о планировщике
А что будет если я повешу индексы на колонки? Ошибка выборки?
Мелкий
Отправлено: 16 Июля, 2012 - 13:15:52
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Работать-то будет, но не будут использоваться индексы для этой конструкции - что может быть довольно печально по скорости.
----- PostgreSQL DBA
alxfro
Отправлено: 16 Июля, 2012 - 14:45:13
Частый гость
Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Мелкий пишет:
Работать-то будет, но не будут использоваться индексы для этой конструкции - что может быть довольно печально по скорости.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.