IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   MYSQL: Номер строки (https://www.imho.ws/showthread.php?t=70013)

Psionic Vision 03.10.2004 17:32

MYSQL: Номер строки
 
Допустим, есть таблица

ID поле 1 поле 2 поле 3
23 знач 1 знач 2 знач 3
36 знач 1 знач 2 знач 3
90 знач 1 знач 2 знач 3

Как можно определить номер строки с ID 36? Чтоб результат был "2"?
Спасибо.

Fiery_Fenix 03.10.2004 22:06

mysql_query() возвращает именно номер строки результата запроса, ничего лишнего придумывать не надо.

Psionic Vision 03.10.2004 22:59

Куда она его возвращает? Т.е. - в какую переменную?

Hubbitus 03.10.2004 23:12

Цитата:

Neo:
Как можно определить номер строки с ID 36? Чтоб результат был "2"?
Интересно как ты хочешь определить номер строки, где он у тебя записан?
Ведь MySQL и сортирует поразному результаты и запросы оптимизирует поразному и соответственно в зависимости от запроса номер одной и той же строки всегда разный, если явно не задан требуемый порядок сортировки.

Fiery_Fenix 03.10.2004 23:29

Согласен с Hubbitus...
Например запрос
$row=mysql_query("SELECT * FROM table"); вернет $row=2, если эта запись была вненсена 2-й. Запрос
$row=mysql_query("SELECT * FROM table ORDER BY 'id'");
точно вернет $row=2.
ЗЫ Ну и маразм я раньше написал :) ща все исправил.

Psionic Vision 04.10.2004 01:10

Fiery_Fenix
Ну зачем вам мой запрос?
Само сабой разумеется, что мой запрос следующий:
$row=mysql_query("SELECT * FROM table WHERE id='36' ORDER BY 'id'");

Почему нельзя ответить конкретно на вопрос:
куда возвращает этот номер, и как потом к нему обращаться?

Hubbitus 04.10.2004 04:18

Цитата:

Neo:
Само сабой разумеется, что мой запрос следующий:
$row=mysql_query("SELECT * FROM table WHERE id='36' ORDER BY 'id'");
При таком запросе и приведенной тобой выше таблице результат будет всего одна строка, соответственно, к гадалке не ходи у нее номер всегда 1 :biggrin:

Psionic Vision 04.10.2004 04:34

Вы издеваетесь?

Мне нужно, чтобы база вернула положение строки В ТАБЛИЦЕ ( с заданным порядком, разумеется)...

EvroStandart 04.10.2004 10:23

Ныверно у базы нет такой функцыи. Можно просто найти все поля id и пробежаться по ним считая количество.

Sheryld 04.10.2004 12:23

если тебе просто нужно пронумеровать записи, то сделай это в цикле перебора записей(скажем mysql_fetch_assoc).

заводишь счетчик, и делаешь инкремент.

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

физически запись может быть первой, а вернется 10-ой(из-за условий сортировки например).

Hubbitus 04.10.2004 21:07

Цитата:

Neo:
Вы издеваетесь?
Нет, объясняем некорректность поставленного вопроса.
Цитата:

Neo:
Мне нужно, чтобы база вернула положение строки В ТАБЛИЦЕ
это положение всегда разное, НЕТУ НОМЕРА строки кактаковой, есть номер в выборке, но этот номер соответственно зависит от условий выбора...

Heo 05.10.2004 00:29

Neo

Может что-то типа такого?

PHP код:

$i 0;
$id 36 // ID (вообще, можно и по HTTP_POST_VARS передать
$conn db_connect(); // функция подключения к базе
$query "SELECT * FROM таблица";
$result mysql_query($query$conn);

for(
$query_result mysql_fetch_array($story_result); $i != $id$i++)

print 
'Номер строки: '.$i


Psionic Vision 05.10.2004 01:32

Heo
Да.. Спасибо.
В общем то, я именно это и собирался сделать с самого начала, тока думал что может есть более удобный способ :)

Hubbitus 06.10.2004 00:19

:biggrin:

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

Heo 06.10.2004 00:42

Neo
Без проблем. я когда писал предыдущий пост, думал что ты скажешь: "да вы что, меня за ламера туту держите?!" :rolleyes:

Psionic Vision 06.10.2004 01:46

Hubbitus
У меня он постоянные. У меня список постоянных записей, которые я всегда сортирую по дате... Вот и получается.......

Heo
:biggrin: :biggrin: :biggrin:
Я бы такого не сказал :)

Hubbitus 06.10.2004 04:17

Цитата:

Neo:
У меня он постоянные. У меня список постоянных записей, которые я всегда сортирую по дате... Вот и получается.......
Тогда гораздо быстрее/эффективнее/правильнее/проще добавить поле с номером (например стандартный id) и не изобретать велосипед.

Sheryld 06.10.2004 10:30

удивительно, как все начальники любят нумерацию:) я уже даже не задумаваюсь, делать или нет:) везде где выводится больше 10 записей, делаю нумерацию:)

EvroStandart 06.10.2004 11:33

К стати, я тут подумал и пришёл к выводу, что получить номер элемента в выборке можно, только на какой-нибудь другой базе. На пример, в FoxPro точно можно. :beer:


Часовой пояс GMT +4, время: 15:34.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.