Запрос, в котором исключено поле...

Dallas

Guest
Запрос, в котором исключено поле...

Возможно ли сделать запрос, в котором исключено поле? У меня таблица вида:
id | col1 | col2 ...
нужно вывести все данные, кроме id. кол-во столбцов (col)N не известно заранее - таблицы сущ. динамически. Как из запроса исключить поле id?

-~{}~ 18.08.04 20:14:

Хотя можно узнавать, сколько всего столбцов... но все равно вопрос актуален.
 

neko

tеam neko
помоему никак
зато можно после фетча сделать unset( $row['id'] )
 

Кром

Новичок
>Как из запроса исключить поле id?

Если я правильно понял:
select col1, col2 from table

Хотя исключать поле из запроса смысла особого нет. В некоторых случаях используется для ускорения выборок.

>зато можно после фетча сделать unset( $row['id'] )

Жуть какая-то...
 

neko

tеam neko
Кром
ась?
неизвестно заранее какие столбцы будут, поэтому в квери очевидно *, а не список
 

Кром

Новичок
>неизвестно заранее какие столбцы будут, поэтому в квери очевидно *, а не список

Сначала делается так:
DESCRIBE table
а потом сам запрос.

-~{}~ 18.08.04 20:21:

И еще раз повторяю смысла в этом нет.

Dallas или может ты обьяснишь, зачем тебе исключать ID?
 

neko

tеam neko
теоретически разинцы никакой
практически это лишний запрос

-~{}~ 18.08.04 21:26:

это я к тому что "так делается!" в кач-ве обоснования утверждения "это жуть" не принимается
 

Кром

Новичок
Что то я не совсем понял. Ты считаешь, что unset() более приемлемое решение для этого бестолкового вопроса?
Ты ошибаешься. :)
 

neko

tеam neko
предположим что-то обрабатывает элементы
один нужно пропустить

есть два способа:
1. пропускать в обработчике
2. вообще не давать обработчику этот элемент

-~{}~ 18.08.04 21:50:

правда тут один нюанс
id рано или поздно понадобится :)
ссылку поставить или обновить элемент

НО:
возможны редкие ситуации когда оно действительно вот так вот мешать может
 

Кром

Новичок
>есть два способа:

Зачем же тогда ты предложил товарищу третий способ? :)Кстати сказать самый неудачный:

3. передавать элемент обработчику а потом удалять с помощью обработчика, при этом нигде не используя.

>возможны редкие ситуации когда оно действительно вот так вот мешать может

например?
 

neko

tеam neko
я ему предложил второй

например вывод какой-нибудь произвольной таблицы, только на просмотр
например перенос данных при котором id вообще теряется потому что структура меняется
да, это очень редко бывает, но бывает :)

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

Demiurg

Guest
Кром
neko
сами прекратите флуд или мне помочь ?

Dallas
для чего это надо ?
 

Dallas

Guest
Все от лени. Возможно, источник проблемы вызовет смех, но вопрос меня заинтересовал с теоретической точки зрения.
Дело все в том, что если нет id, то удобно заполнять таблицу при распечатке результатов запроса:
PHP:
...
while ($row = mysql_fetch_row($q_select)) {
   echo "<tr>";
   foreach ($row as $col)
   echo "<td>".$col."</td>";
...
-~{}~ 18.08.04 23:04:

...и наверняка вы сейчас предложите более простой способ, как не выводить значение с ключем id, но повторяюсь... в коде зарылся 8), и вопрос показался интересным и вполне из "реальной" жизни.

-~{}~ 18.08.04 23:19:

всмысле, уже предложили, но если я правильно понял, то unset не подходит, так как для этого надо использовать mysql_fetch_assoc и использовать конструкцию вида foreach ($arr as $key => $value), но ведь $key мы не знаем, либо знаем, но для этого опять-таки придется выяснять кол-во столбцов (и это лишь в моем случае, когда известен алгоритм именования полей). Бррр, поправьте, если где ошибся.
 

Demiurg

Guest
id точно такое же поле как и все остальные, если тебе надо тупо распечатать все, печатай все.
Вобщем какая задача, такие и решения.
 

Dallas

Guest
Я не просил искать решения задачи, я просил подтвердить или опровергнуть возможность исключения из запроса одного поля. Я прекрасно понимаю, что id - типичное поле, но мне его не надо распечатывать.

-~{}~ 18.08.04 23:44:

В общем, проблема встала из-за моего незнания доков по MySQL, но ничего, постепенно это исправится 8)
 
Сверху