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 :: Небольшой вопрос по выборке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: условие внутри
alxfro
Отправлено: 16 Июля, 2012 - 10:37:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Есть 6 колонок, кол1, кол2, кол3, кол4, кол5, кол6.

Каким запросом выбрать те строки, где, допустим, не пустые только кол2 и кол3? При
том заранее не известно, кол2 и кол3 это будут или, быть может, кол1 и кол6.

Т.е. выбрать надо строки, где не пусты значение каких либо указанных мной 2 колонок. Не понял

Кто поможет с меня либа на пиво (извините вмки пусты).
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Июля, 2012 - 10:40:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




NOT NULL ?
 
 Top
alxfro
Отправлено: 16 Июля, 2012 - 10:41:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




DeepVarvar пишет:
NOT NULL ?


А пример запроса можно? Лично у меня конструкции выходят на 5 строк.

(Отредактировано автором: 16 Июля, 2012 - 10:41:32)

 
 Top
EuGen Администратор
Отправлено: 16 Июля, 2012 - 10:48:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если колонки указываете Вы, тогда почему запрос на 5 строк? Это же
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` WHERE (`your_column_1` IS NOT NULL) AND (`your_column_2` IS NOT NULL)

Дело другое, если задача состоит в нахождении строк, у которых хотя бы два(при этом любых) поля есть не NULL, и, опять же, это не одно и то же, что задача в нахождении строк, у которых ровно два(и снова - любых) поля есть не NULL.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
alxfro
Отправлено: 16 Июля, 2012 - 10:55:28
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




EuGen пишет:
Дело другое, если задача состоит в нахождении строк, у которых хотя бы два(при этом любых) поля есть не NULL


В этом и проблема. А еще таких полей может быть не 2, а 3, 4, 5, 6.
 
 Top
tuareg
Отправлено: 16 Июля, 2012 - 11:40:47
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




alxfro пишет:
EuGen пишет:
Дело другое, если задача состоит в нахождении строк, у которых хотя бы два(при этом любых) поля есть не NULL


В этом и проблема. А еще таких полей может быть не 2, а 3, 4, 5, 6.

Вам не кажется, что проще будет при insert/update считать количество полей NULL/не NULL и заносить их в отдельный столбик?
 
 Top
alxfro
Отправлено: 16 Июля, 2012 - 11:49:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




tuareg пишет:
Вам не кажется, что проще будет при insert/update считать количество полей NULL/не NULL и заносить их в отдельный столбик?


Спасибо, решение имеет место быть.

Просто у меня уже есть база, которую надо обработать. Была бы она чистая, другое дело Улыбка Хотя, никто не мешает мне написать небольшой код которой обновит это значение.

В общем вы мне помогли.

Пишите номер счета http://www[dot]libertyreserve[dot]com/ если хотите.

Тему считаю более не актуальной, так как с ходу маловероятно подобную проблему решить встроенными средствами mySQL.

(Отредактировано автором: 16 Июля, 2012 - 11:52:56)

 
 Top
Мелкий Супермодератор
Отправлено: 16 Июля, 2012 - 11:56:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Решить-то можно
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` WHERE ((`col1` IS NOT NULL) + (`col2` IS NOT NULL) + (`col3` IS NOT NULL))>=2

Вопрос в эффективности.


-----
PostgreSQL DBA
 
 Top
alxfro
Отправлено: 16 Июля, 2012 - 12:02:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Мелкий пишет:
Решить-то можно
CODE (SQL):
скопировать код в буфер обмена
SELECT * FROM `table` WHERE ((`col1` IS NOT NULL) + (`col2` IS NOT NULL) + (`col3` IS NOT NULL))>=2

Вопрос в эффективности.


Гениально.
Почему вы вспомнили про эффективность?
 
 Top
Мелкий Супермодератор
Отправлено: 16 Июля, 2012 - 12:11:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Индексы использоваться не могут. Или же я слишком плохого мнения о планировщике Закатив глазки


-----
PostgreSQL DBA
 
 Top
alxfro
Отправлено: 16 Июля, 2012 - 12:57:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Мелкий пишет:
Индексы использоваться не могут. Или же я слишком плохого мнения о планировщике


А что будет если я повешу индексы на колонки? Ошибка выборки?
 
 Top
Мелкий Супермодератор
Отправлено: 16 Июля, 2012 - 13:15:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Работать-то будет, но не будут использоваться индексы для этой конструкции - что может быть довольно печально по скорости.


-----
PostgreSQL DBA
 
 Top
alxfro
Отправлено: 16 Июля, 2012 - 14:45:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Мелкий пишет:
Работать-то будет, но не будут использоваться индексы для этой конструкции - что может быть довольно печально по скорости.


Ясно. Спасибо, буду иметь ввиду.

(Отредактировано автором: 16 Июля, 2012 - 14:45:28)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB