Здраствуйте. Кричу о помощи, ибо перерыл весь интернет и не нашел решения К примеру есть база test с полями nid, ddatetime, npole, ctext 1 12.01.2007 1 eee 2 13.01.2007 0 ccc 3 15.01.2007 0 aaa 4 16.01.2007 1 ddd 5 17.01.2007 0 fff 6 18.01.2007 1 ggg Выполняется запрос select * from test where npole='1' group by ddatetime соответсвенно выйдут записи 6 18.01.2007 1 ggg 4 16.01.2007 1 ddd 1 12.01.2007 1 eee Но как приписать им виртуальные номера а не id. Прошу не предлогать foreach, так как база большая.... (в скобках-"виртуальные номера") (1) 6 18.01.2007 1 ggg (2) 4 16.01.2007 1 ddd (3) 1 12.01.2007 1 eee Должна быть какая то функция на подобии array_search,array_walk - которая могла бы вытащить номер "виртуальной-выбранной-текущей" записи. Для чего это нужно поясняю Например нужно узнать какой "виртуальный" номер имеет запись с id=1 в этой самой выборке С уважением Игорь
Если ты собрался все записи из своей большой базы выбирать, то никакие подобные array_walk() функции тебе не друзья. Код (Text): $query = (массив записей); array_unshift($query); unset($query[0]); // теперь $query это массив первый ключ которого 1, а не 0 P.S. Есть ещё array_map().
Что то не вразумил для чего мне array_unshift??? array_unshift() присоединяет переданные элементы в начало массива array. Заметьте, что список элементов присоединяется как единое целое, и присоединяемые элементы располагаются в том же порядке..... (описание) Что мне это дает? Ведь нужно найти в так называемом курсоре запись с номером id=1, и для него будет виртуальный номер 3, для id=4 будет 2, id=6 будет 1
хорошо создам столбец, а как мне его заполнять и потом еще искать??? Ведь заполняться будет каждый раз по разным условиям выборки и тем более что будет лапатить большую базу, пока сикл не умрет.... SET @x=0; SELECT @x:=@x+1, t.* FROM test t WHERE npole='1' GROUP BY ddatetime Это я уже давно пробывал, но почему то у меня не срабатывало..... (возможно еще раз поробую), если сработает, то как вытащить этот Х зная ID???? Спасибо всем
[sql]SET @x=0; SELECT num FROM (SELECT @x:=@x+1 AS num, t.id FROM test t WHERE npole='1' GROUP BY ddatetime) a WHERE id = 15;[/sql]
SET @x=0; на этом месте происходит ошибка SELECT num FROM (SELECT @x:=@x+1 AS num, t.id FROM test t WHERE npole='1' GROUP BY ddatetime) a WHERE id = 15; здесь если даже и отрабатывает при не установленном SET @x=0;, то поле num всегда 0.... Извените за задержку.... Может есть другой запрос
MySql 4..., а других способов нет для этого? Возможно есть иные способы для этого, которые работают и в 4 SQL