Выбрать все непустые элементы таблицы

  • Автор темы Автор темы .scu
  • Дата начала Дата начала

.scu

Новичок
Выбрать все непустые элементы таблицы

Можно ли как-то стандартными средствами MySQL выбрать из таблицы (при условии, что мы не знаем заранее кол-во ее полей и их название и выборку делаем вида "SELECT *")
все непустые элементы?
 
самое странное, при такой постановке вопроса, что мы все таки знаем имя таблицы.
 
это совсем не странно, т.к. во-первых имя таблицы также может быть неизвестно :)
во-вторых, даже если оно известно - выборка может идти из нескольких таблиц, где полей очень много, перечислять каждое из них неудобно.
 
если известна структура базы, то почему должна быть не известна структура таблиц??
 
SHOW DATABASES; - Получаем список всех баз
USE DB_NAME; - Указываем что будем использовать базу DB_NAME
SHOW TABLES; - Получаем список всех таблиц в базе DB_NAME
DESCRIBE TABLE_NAME; Получаем список всех полей в таблице TABLE_NAME
 
Navarro
+ если mysql5, то всё ещё проще делается. но вопрос был про нативные средства :-)
 
Navarro, видимо вы меня не совсем верно поняли.
Задача был выбрать все не пустые поля (из нужной таблицы (таблиц) при SELECT * встроенными средствами MySQL

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

ответ, насколько можно понять - встроенных подобных средств нет.

-~{}~ 23.06.08 02:20:

Long, если выборка динамическая - вполне имеет место быть.
 
.scu
SELECT *
предпологает что тебе нужны строки вида поле1 ... полеN
если хотя бы одно поле не пустое строка нужна ?
исключив аутоинкрементные поля , получишь список которые не могут быть пустыми.

НО переменный набор полей чтобы пустых вообще не было так не добьешся.

что за исходная задача ? опять студенты лабу пищут ?
 
antson, причем здесь студенты???

Задачу я описала в начале топика, а чуть ниже описала, зачем это нужно, но суть в том:
чтобы не засорять конечный массив данных пустыми значениями.
удалять пустые значения можно конечно и PHP-ой, просто хотелось узнать, вдруг есть соответствующая стандартная операция, о которой я не знаю в MySQL
 
что значит "непустые элементы"?
Насколько я понял, Вы хотите при выборе строки в которой есть 4 поля - получить только те поля которые не пусты?
Тогда вы "хотите странного" (учитывая конечно "SELECT *")
Потому как в одной строке может быть пустым поле 1 и поле 2, а во второй строке поле 2 и поле 4, а в третьей поле 1, 2, и 4.
В общем или я чего-то не понял или Вы вообще не понимаете как работать с БД(без обид).
 
.scu
Ты точно не путаешь "поля" (fields) со строками (rows) ?
Потому что твой вопрос не понятен, тебя не заставляет это задуматься ?
 
Gas, я-то не путаю, но допускаю, что можно не верно понять мою трактовку:)


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

непустые элементы = значения полей.

-~{}~ 23.06.08 21:15:

вообщем, понятно, что встроенных средств MYSQL к этому нет, посему вопрос снимается.
 
я даже сомневаюсь что подобное есть в других базах данных, имхо, это противоречит реляционной алгебре.
просто ты не должен этого хотеть :)
 
Наверное, .scu хотела не совсем то, о чем написала :). Чтобы не открывать новую тему, задам вопрос в этой.

Как выбрать только не пустые (не NOT NULL, а именно не пустые) значения из одной колонки таблицы? Т.е. мне нужно обновить одну таблицу данными из другой, только в том случае, когда эти данные есть в другой. MySQL 5

SELECT id, need_col FROM table WHERE ned_col = не пустая
 
Тю, как говорится, блин... а ларчик просто открывался :) Я то уже начал искать нечто наподобие empty() в php для mysql, спасибо :)
 
Сверху