В базах Paradox можно было осуществлять навигацию по базе данных командами First, Next, Previous. Существуют ли подобные команды в базах MySQL. Или есть каие-то альтернативные способы навигации??
Обычный подход для не-SQL баз данных. Выборка осуществляется позиционированием на первый элемент (First) и последовательным Next. psoi В SQL-базах выборка делается с помощью запроса. При этом запрос может быть довольно сложным, с условиями выборки и сортировки. Короче, надобностьв таких функциях отпадает, когда более-менее освоишь SQL. ЗЫ. Эти функции можно эмулировать. Например, First - это select * from table_name limit 1;
AlexGousev Спасибо за разъяснение. Вот только поправлю. Эмулировать First в SQL базе невозможно. Именно потому, что в ней нет никакого позиционирования, первых и последних записей. А вся нужная функциональность обеспечивается добавлением нужных полей в таблицу.
mysql_data_seek - перемещает внутренний результирующий указатель. Описание bool mysql_data_seek (resource result_identifier, int row_number) Возвращает TRUE при успехе, FALSE при неудаче. mysql_data_seek() перемещает внутренний результирующий указатель MySQL-результата, ассоциированного со специфицированным идентификатором результата, для указания на специфицированный номер ряда. Последующий вызов mysql_fetch_row() возвратит этот ряд. Row_number начинаются с 0. row_number должен быть значением в диапазоне от 0 до mysql_num_rows - 1.
actionscript при чём здесь mysql_data_seek? Я думаю, надо дождаться ответа psoi на вопрос Горбунова Олега. И только потом выдвигать предложения.
Горбунов Олег Позиционирует внутренний указатель внутри результата конкретной выборки. Применимость этого механизма исчезающе мала. Вероятность того, что он понадобится автору вопроса - ничтожна. Кто из вас вспомнит случай, когда ему реально понадобилась бы эта функция?
Можно,можно Разве результатом моего запроса не будет первая строка? (ну или ничего не будет, если таблица пуста).
в SQL нет понятия "первой строки". Первая строка определяется порядком сортировки ORDER BY. Если такая отсутствует, то записи выводятся так, как они хранятся, а хранятся они отнюдь не "по порядку", а гораздо сложнее.
Чебурген, я как всегда абстрактен =) Я не говорю о пользе конкретного решения... я говорю о его существовании.
Чебурген Я могу конечно ошибаться, но разве First, Next, Previous они не позиционируют внутренний указатель внутри результата конкретной выборки.
Задача у меня на первый взгляд простая. Попытаюсь внятно объяснить. Шапка таблицы такова: date, p1, p2....pn, где date - это дата в формате yy.mm.dd, p1...pn - некоторые параметры, которые соответсвуют определенной дате. Наполнение таблицы происходит автоматически, чтением из текстового файла. В этом текстовом файле присутсвует некоторое число N, которое относится к сегодняшней дате. Это число является суммой параметров p1 до текущей даты + некоторый остаток. Мне этот остаток и нужно узнать. В Парадоксе я бы запустил в цикле (Pascal): p1:=Tablep1.Value //значение параметра р1 из таблицы Table N:=N-p1; Table.Previous; т.е. от текущей даты и до начала таблицы отсчитал бы р1 и получил-бы остаток. Так хотел сделать аналогично в php c mysql - но не нашел таких инструментов.
PHP: <?php $qry = 'SELECT SUM(P1) AS PS FROM TABLE WHERE `DATE` < нужная_дата'; $res = mysql_query($qry); $sp = mysql_result($res, 1); $rest = $N - $sp; ?> И никакие циклы не нужны.
а зачем ты записываешь из текстового файла в таблицу? Ведь работа с текстовым файлом ничем не отличается от описанной тобой работы с парадоксом? в SQL же все нужные операции производятся одним запросом. составляешь запрос, выполняешь его, получаешь нужный результат.
Дело в том, что текстовые файлы формирует удаленный контроллер. (Их пока 20, но будет в сотни раз больше). Контроллер отсылает данные в виде текстового файла на фтп раз в сутки, полностью их перезаписывая. Мне необходимо, что-бы все данные автоматом перекидывались в базу данных. Так я могу по запросу формировать отчеты по данным за любой указанный временной интервал.
А так называемый контроллер самописный или настраиваемый? Если да то как вариант в имя файла включать префикс контроллера и дату , а в бд создать тавлицу, в которой содержится информация о ранее подгруженных файлах для избежания повторной загрузки данных( ну и для кучи сввязать таблицу с инфой о файлах с таблицей с данными для того чтобы можно было определить какие данные из какого файла были занесены в бд).
Да так собственно всё и сделано )) И работает как часы. Просто возникла небольшая проблемка с одним из параметров. Но мне сегодня на работе предложили алгоритм, где с помощью SELECT ...FROM...ORDER BY.... можно прекрасно справится. Извините все за мороку. ------------------------------------------------------------ З.Ы. Я кстати не програмист, а теплотехник. Решаем теплотехническую задачу. Но мне как молодому и как "отлично" разбирающемуся в компьютерах предложили взятся за это дело. Купили мне две книги по пхп и вперед )
то, что тебе предложили сегодня на работе - головотяпство и глупость. а как по-человечески пользоваться базой данных, тебе подсказали здесь и ещё позавчера.