За последние 24 часа нас посетили 17190 программистов и 1302 робота. Сейчас ищут 1605 программистов ...

Навигация по базе данных

Тема в разделе "MySQL", создана пользователем psoi, 30 окт 2006.

  1. psoi

    psoi Активный пользователь

    С нами с:
    25 июн 2006
    Сообщения:
    65
    Симпатии:
    0
    В базах Paradox можно было осуществлять навигацию по базе данных командами First, Next, Previous. Существуют ли подобные команды в базах MySQL. Или есть каие-то альтернативные способы навигации??
     
  2. Anonymous

    Anonymous Guest

    А зачем?
     
  3. psoi
    расскажи поподробнее об этом механизме.
     
  4. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Обычный подход для не-SQL баз данных. Выборка осуществляется позиционированием на первый элемент (First) и последовательным Next.

    psoi
    В SQL-базах выборка делается с помощью запроса. При этом запрос может быть довольно сложным, с условиями выборки и сортировки. Короче, надобностьв таких функциях отпадает, когда более-менее освоишь SQL.

    ЗЫ. Эти функции можно эмулировать. Например, First - это select * from table_name limit 1;
     
  5. AlexGousev
    Спасибо за разъяснение.
    Вот только поправлю. Эмулировать First в SQL базе невозможно. Именно потому, что в ней нет никакого позиционирования, первых и последних записей. А вся нужная функциональность обеспечивается добавлением нужных полей в таблицу.
     
  6. Anonymous

    Anonymous Guest

    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.
     
  7. actionscript
    при чём здесь mysql_data_seek?

    Я думаю, надо дождаться ответа psoi на вопрос Горбунова Олега.
    И только потом выдвигать предложения.
     
  8. Anonymous

    Anonymous Guest

    Чебурген, ту же функцию выполняет. Позиционирует внутренний указатель.
     
  9. Горбунов Олег
    Позиционирует внутренний указатель внутри результата конкретной выборки.
    Применимость этого механизма исчезающе мала.
    Вероятность того, что он понадобится автору вопроса - ничтожна.

    Кто из вас вспомнит случай, когда ему реально понадобилась бы эта функция?
     
  10. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Можно,можно :)
    Разве результатом моего запроса не будет первая строка? (ну или ничего не будет, если таблица пуста).
     
  11. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    в SQL нет понятия "первой строки". Первая строка определяется порядком сортировки ORDER BY. Если такая отсутствует, то записи выводятся так, как они хранятся, а хранятся они отнюдь не "по порядку", а гораздо сложнее.
     
  12. Нет, не будет.
    Понятие первая/последняя строка бывает только в выборке с order by
     
  13. Anonymous

    Anonymous Guest

    Чебурген, я как всегда абстрактен =) Я не говорю о пользе конкретного решения... я говорю о его существовании.
     
  14. Anonymous

    Anonymous Guest


    Чебурген
    Я могу конечно ошибаться, но разве First, Next, Previous они не позиционируют внутренний указатель внутри результата конкретной выборки.
     
  15. Я тоже.
    Поэтому подождём автора вопроса.
    Особенно учитывая бессмысленность такого позиционирования.
     
  16. psoi

    psoi Активный пользователь

    С нами с:
    25 июн 2006
    Сообщения:
    65
    Симпатии:
    0
    Задача у меня на первый взгляд простая. Попытаюсь внятно объяснить.
    Шапка таблицы такова: 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 - но не нашел таких инструментов.
     
  17. Anonymous

    Anonymous Guest

    PHP:
    1. <?php
    2. $qry = 'SELECT SUM(P1) AS PS FROM TABLE WHERE `DATE` < нужная_дата';
    3. $res = mysql_query($qry);
    4. $sp = mysql_result($res, 1);
    5. $rest = $N - $sp;
    6. ?>
    И никакие циклы не нужны.
     
  18. а зачем ты записываешь из текстового файла в таблицу?
    Ведь работа с текстовым файлом ничем не отличается от описанной тобой работы с парадоксом?

    в SQL же все нужные операции производятся одним запросом.
    составляешь запрос, выполняешь его, получаешь нужный результат.
     
  19. psoi

    psoi Активный пользователь

    С нами с:
    25 июн 2006
    Сообщения:
    65
    Симпатии:
    0
    Дело в том, что текстовые файлы формирует удаленный контроллер. (Их пока 20, но будет в сотни раз больше). Контроллер отсылает данные в виде текстового файла на фтп раз в сутки, полностью их перезаписывая. Мне необходимо, что-бы все данные автоматом перекидывались в базу данных. Так я могу по запросу формировать отчеты по данным за любой указанный временной интервал.
     
  20. Anonymous

    Anonymous Guest

    psoi, мое имхо по данному вопросу - скриптовый язык мало подходит для таких действий.
     
  21. да не, нормально.
    в фоне ведь будет скрипт крутиться
     
  22. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    А так называемый контроллер самописный или настраиваемый? Если да то как вариант в имя файла включать префикс контроллера и дату :D, а в бд создать тавлицу, в которой содержится информация о ранее подгруженных файлах для избежания повторной загрузки данных( ну и для кучи сввязать таблицу с инфой о файлах с таблицей с данными для того чтобы можно было определить какие данные из какого файла были занесены в бд).
     
  23. psoi

    psoi Активный пользователь

    С нами с:
    25 июн 2006
    Сообщения:
    65
    Симпатии:
    0
    Да так собственно всё и сделано :))) И работает как часы. Просто возникла небольшая проблемка с одним из параметров. Но мне сегодня на работе предложили алгоритм, где с помощью SELECT ...FROM...ORDER BY.... можно прекрасно справится. Извините все за мороку.

    ------------------------------------------------------------
    З.Ы. Я кстати не програмист, а теплотехник. Решаем теплотехническую задачу. Но мне как молодому и как "отлично" разбирающемуся в компьютерах предложили взятся за это дело. Купили мне две книги по пхп и вперед :))
     
  24. то, что тебе предложили сегодня на работе - головотяпство и глупость.
    а как по-человечески пользоваться базой данных, тебе подсказали здесь и ещё позавчера.