Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка строк по их порядковому номеру / 25 сообщений из 44, страница 1 из 2
10.04.2015, 10:23:17
    #38932770
dalexra51
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
Всем привет!
Из базы MySQL вытаскиваю общее количество записей и потом мне надо в цикле их перебирать. ИД записей, по которым хоть как-то можно было б их перебирать нету. Хочу в цикле перебирать записи обращаясь к ним по порядковому номеру в таблице.

Как это правильно сделать?
спасибо.
...
Рейтинг: 0 / 0
10.04.2015, 10:27:46
    #38932783
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51Хочу в цикле перебирать записи обращаясь к ним по порядковому номеру в таблице.У записей в таблице нет "порядкового номера".
...
Рейтинг: 0 / 0
10.04.2015, 10:33:26
    #38932789
dalexra51
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
Это я понимаю, если б они были я б не поднимал вопрос )
Поэтому и спрашиваю у опытных как решать эту задачу )
...
Рейтинг: 0 / 0
10.04.2015, 10:34:05
    #38932792
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
В MySQL с таблицами работают SQL-запросами а не циклами.
ну если так необходимо какое-то ID (rownum) -
FAQ: Нумерация строк и другие вопросы про использование переменных
...
Рейтинг: 0 / 0
10.04.2015, 10:35:57
    #38932797
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51,

покажите вывод
SHOW CREATE TABLE вашаТабл;
...
Рейтинг: 0 / 0
10.04.2015, 10:39:44
    #38932799
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
Alex_UstinovВ MySQL с таблицами работают SQL-запросами а не циклами.
ну если так необходимо какое-то ID (rownum) -
FAQ: Нумерация строк и другие вопросы про использование переменных Да нет, тут вопрос в другом. Вот ТС пишет "Из базы MySQL вытаскиваю <...> и потом мне надо в цикле их перебирать <...> Хочу в цикле перебирать записи обращаясь к ним по порядковому номеру в таблице.". Отсюда следует, что он уже эти записи (или как минимум их ид) выбрал на клиент, так нахрена ещё раз их нумеровать? На клиенте они явно в массиве лежат, ну так и перебирай тот массив. Ну или ему какая-то специальная сортировка нужна, так опять же - задай сортировку в запросе, получи отсортированный список ид в массив и проходись по нему по порядку. В общем, непонятно, зачем ТСу в принципе эта нумерация, если он один хрен запускает цикл на клиенте, где эта нумерация уже есть .
...
Рейтинг: 0 / 0
10.04.2015, 10:48:10
    #38932806
dalexra51
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
По ссылке:
Задача: Пронумеровать строки в запросе
Достаточно часто возникает необходимость пронумеровать возвращаемые MySQL строки средствами самой базы данных.

а мне надо сделать так:
<?
$c = количесво строк в таблице;
for ( $i = 0; $i <= $c; $i++ ) {
$res = mysql_query( ' SELECT * FROM my_table WHRE номер_строки_в_таблице = $i' );
...
...
}
?>

Вот как-то так...
А так как такой запрос не делал никогда то написал схематически то что надо....
...
Рейтинг: 0 / 0
10.04.2015, 11:05:49
    #38932830
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?
$c = количесво строк в таблице; //ну и откуда вы это число берёте?
for ( $i = 0; $i <= $c; $i++ ) {
    $res = mysql_query( ' SELECT * FROM my_table WHRE номер_строки_в_таблице = $i' );
    ... //тут типа обработка каждой записи отдельно?
    ...
}
?>

Так ЯННП, что мешает сделать вот типа так?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?
    $res = mysql_query( ' SELECT * FROM my_table' );
    for ( $i = 0; $i <= record_count($res); $i++ ) {
      ...
      ...
    }
}
?>

Начешуя 100500 запросов кидать, если вы всё равно всю таблицу выгребать собрались?
...
Рейтинг: 0 / 0
10.04.2015, 11:09:03
    #38932834
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
tanglir
Код: php
1.
$i <= record_count($res)

Не советовал бы. Лучше просто цикл до конца выборки.
...
Рейтинг: 0 / 0
10.04.2015, 11:10:28
    #38932836
dalexra51
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
tanglirdalexra51
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?
$c = количесво строк в таблице; //ну и откуда вы это число берёте?   --- SELECT COUNT...   проблема что-ли????? 
for ( $i = 0; $i <= $c; $i++ ) {
    $res = mysql_query( ' SELECT * FROM my_table WHRE номер_строки_в_таблице = $i' );
    ... //тут типа обработка каждой записи отдельно?
    ...
}
?>

Так ЯННП, что мешает сделать вот типа так?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?
    $res = mysql_query( ' SELECT * FROM my_table' );  //  знаешь сколько эта звездочка может весить??????
    for ( $i = 0; $i <= record_count($res); $i++ ) {
      ...
      ...
    }
}
?>

Начешуя 100500 запросов кидать, если вы всё равно всю таблицу выгребать собрались?
...
Рейтинг: 0 / 0
10.04.2015, 11:14:19
    #38932840
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
miksoft, не, ну это просто идея. Можно заранее количество посчитать или делать так, как вы сказали. Просто такое впечатление, что ТС переходит на пхп+мускль с какого-то FPD2.0 и тянет за собой все старые привычки.
...
Рейтинг: 0 / 0
10.04.2015, 11:15:40
    #38932841
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51SELECT COUNT... проблема что-ли?????Итого вместо одного запроса получим N+1, где N - количество строк в таблице. Проблема.
...
Рейтинг: 0 / 0
10.04.2015, 11:25:28
    #38932859
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51,

если вы просто выводите данные, то прокатит. Если вы собираетесь как-то изменять данные, то вам все равно нужен уникальный ключ. Примеры есть в документации по PHP .
пример использования mysqli<?php
$mysqli->real_query('SELECT * FROM `test`');
$query = $mysqli->store_result();
while ($row = $query->fetch_assoc()) {
$id = (int) $row['id'];
$query2 = $mysqli->query("UPDATE `test` SET `label` = md5(rand()) WHERE `id` = $id");
}
?>
...
Рейтинг: 0 / 0
10.04.2015, 11:26:45
    #38932862
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51Хочу в цикле перебирать записи обращаясь к ним по порядковому номеру в таблице.

Понятие порядка у записи в таблице возникает при выборке с сортировкой. До этого никакого порядка нет.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
<?
$c = количесво строк в таблице;
for ( $i = 0; $i <= $c; $i++ ) {
$res = mysql_query( ' SELECT * FROM my_table WHRE номер_строки_в_таблице = $i' );
...
...
}
?>



<Страшно кричит>
...
Рейтинг: 0 / 0
10.04.2015, 11:45:27
    #38932882
dalexra51
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
В общем получается что прямых механизмов нету.
Поэтому придется делать это просто в каздом запросе делать офсет

1. tanglir, за один запрос выбрать все и потом этим манипулировать не получится, так как выбранное может весить гигабайты
2. Alex_Ustinov, данные просто выводятся и обрабатываются. обратно ниче не пишется.

Есть еще варианты кроме пошагового OFFSET $i++ с количеством шагов = количество записей?
спасибо
...
Рейтинг: 0 / 0
10.04.2015, 11:52:17
    #38932890
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
вриант по ссылке из FAQ
Код: sql
1.
2.
SELECT @i := @i + 1 AS row_number, your_table.*
FROM your_table, (select @i:=0) AS z;
...
Рейтинг: 0 / 0
10.04.2015, 11:56:22
    #38932897
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51,

никогда не нужен запрос на гигабайты, конкретизируйте в условии по периоду по еще какому-нибудь признаку
Расскажите, с какой целью вы хотите "перебрать в цикле записи"
...
Рейтинг: 0 / 0
10.04.2015, 12:01:52
    #38932902
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra511. tanglir, за один запрос выбрать все и потом этим манипулировать не получится, так как выбранное может весить гигабайтыНо не было речи о том, чтобы хранить это все в памяти одновременно. Буфер может быть размером вообще всего на одну запись.
...
Рейтинг: 0 / 0
10.04.2015, 12:03:00
    #38932904
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51Есть еще варианты кроме пошагового OFFSET $i++ с количеством шагов = количество записей?Если речь про конструкцию LIMIT ... OFFSET ..., то это, пожалуй, наихудший вариант из возможных.
...
Рейтинг: 0 / 0
10.04.2015, 12:09:32
    #38932912
dalexra51
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
miksoft, а какие найлучшие?
...
Рейтинг: 0 / 0
10.04.2015, 12:14:48
    #38932921
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
dalexra51а какие найлучшие?вы сначала расскажите, что вы хотите сделать. Если это не секрет, конечно. Не "как", а "что".
...
Рейтинг: 0 / 0
10.04.2015, 12:19:38
    #38932925
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
я кажись понял, что ему надо.

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

и вот за раз не достать их, надо пошагам, но чтобы достать всё, и каждую запись один раз гарантировано...


для ТС
ну так, первичный ключ автоинкремент, и ориентироваться по нему.

И=0
ШАГ цикла- выбор записей с айдишниками больше И сортируя по айди по возрастанию, не более Н штук . И=И+Н

и проходишь их все...читая по 1000 записей, по 10000 например.

===
есчё есть вариант сделать выбор в файл, и читать файл
...
Рейтинг: 0 / 0
10.04.2015, 12:24:04
    #38932930
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
alex564657498765453у него есть таблица - пусть это будет архвив за 50 лет погоды, и вот надо пройтись по всем записям и считывать для простоты температуру скажем, дабы среднее посчитать.

Этот пример не объясняет, зачем лупить циклы с выборкой, ибо "среднее" считается одним запросом к базе данных.
...
Рейтинг: 0 / 0
10.04.2015, 12:24:36
    #38932932
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
alex564657498765453ну так, первичный ключ автоинкремент, и ориентироваться по нему.
dalexra51ИД записей, по которым хоть как-то можно было б их перебирать нету
...
Рейтинг: 0 / 0
10.04.2015, 12:34:40
    #38932944
dalexra51
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка строк по их порядковому номеру
есть таблица (title, text, attach, desc, img) (поля могут весить много, например изображения в base64 и так далее)

надо: по очереди выбрать все поля (только чтение!)(данные потом будут вставлять в другие структуры которые не имеют отношения к теме)

почему по очереди и по одному? объясню сообществу. Дело в том что делать это все должен обработчик вызываемый аяксом, и работать все это дело должно на самых слабых вирт хостах с ограничениями памяти.

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

поэтому: клиент дает запрос на выборку - обработчик достает запись и отдает клиенту - после манипуляций клиент запрашивает след запись ($i++) - обработчик достает след запись (след строку таблицы) и отдает клиенту..... и так далее
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка строк по их порядковому номеру / 25 сообщений из 44, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]