Автор Тема: SELECT определеную строку  (Прочитано 7529 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн новичок

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://proglan.pri.ee/forum - Форум Программистов!
SELECT определеную строку
« : 15 Июля 2003, 13:17:00 »
Вопрос, есть строки:
------------------------------
name      | nick
------------------------------
sasha      | ibsn
anton     | bostaf
kozel      | sam takoi
...

Как мне выбрать строку по номеру строки, допустим в переменой $n хранится номер строки (в файле это делается так: $file[$n]) а как это в mysql делается???
Предпалагаю, что LIMIT $n, 1

Может есть другаю функция???
http://proglan.pri.ee/forum - Форум Программистов!

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
SELECT определеную строку
« Ответ #1 : 15 Июля 2003, 13:29:24 »
новичок
Кури доки.  В базе данных нет такого понятия, как "номер строки". Для того, что ты хочешь сделать, тебе надо явно завести в таблице атрибут ID и выбирать по нему.

А вообще вопросы твои абсолютно идиотские, и показывают, что ты не удосужился заглянуть хоть в какую-нибудь документацию по MySQL, и понять, как это работает.
•••Jah\'d never let us down!•••

Оффлайн новичок

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://proglan.pri.ee/forum - Форум Программистов!
SELECT определеную строку
« Ответ #2 : 15 Июля 2003, 13:35:22 »
Я не могу создавать ID!!!

Тогда придется LIMIT =(
http://proglan.pri.ee/forum - Форум Программистов!

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
SELECT определеную строку
« Ответ #3 : 15 Июля 2003, 13:41:34 »
Цитировать
новичок:
Я не могу создавать ID!!!

Бедняжка :( налейте ему водки...
работа в Украине

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
SELECT определеную строку
« Ответ #4 : 15 Июля 2003, 13:44:03 »
новичок
LIMIT тебе не поможет, потому, что порядок строк в базе не фиксирован, и может меняться с добавлением новых.
•••Jah\'d never let us down!•••

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
SELECT определеную строку
« Ответ #5 : 15 Июля 2003, 13:44:49 »
Yukko
[off]Маленький он еще, водку пить. Ему ее и продавать-то не скоро будут.
[/off]
•••Jah\'d never let us down!•••

Оффлайн новичок

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://proglan.pri.ee/forum - Форум Программистов!
SELECT определеную строку
« Ответ #6 : 15 Июля 2003, 13:45:48 »
Тогда вопрос, как мне избежать чтобы id при update стновились такими:
1
2
4
5
7
????
http://proglan.pri.ee/forum - Форум Программистов!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
SELECT определеную строку
« Ответ #7 : 15 Июля 2003, 13:55:10 »
структуру таблицы (просто мне интересно как у тебя ID определено) и текст UPDATE-запроса покажи
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
SELECT определеную строку
« Ответ #8 : 15 Июля 2003, 13:59:54 »
новичок
ты боишься того, что id будут идти не по порядку?
Они и не должны.
•••Jah\'d never let us down!•••

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
SELECT определеную строку
« Ответ #9 : 15 Июля 2003, 14:22:24 »
Может я чего-то не понимаю... но кажется, что в поле name не может быть двух одинаковых имен, либо в полях name+nick не может быть двух одинаковых значений (от задачи зависит), тогда в БД надо сделать эти два поля составным ключом, и выбирать либо по нику либо по имени, сочетание name+nick и будет твоим id! он не обязательно должен быть числом...
XanderЕсли я не прав, поправь...
работа в Украине

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
SELECT определеную строку
« Ответ #10 : 15 Июля 2003, 14:34:14 »
Yukko
Это скорее к fidget вопрос, она лучше меня в этом разбирается.
Но я бы с составными ключами связываться не стал. К примеру работать они должны ощутимо медленнее, чем численный ID. Или вот, допустим, надо тебе передать ID скрипту. С числом все ясно, а вот с такой парой уже сложнее - а вдруг там ники на руском?..
 А в какой кодировке клиент их посылает?...

В общем возможны проблемы.

А автор темы так и не сказал, что ему в конечном итоге нужно.
•••Jah\'d never let us down!•••

Оффлайн новичок

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://proglan.pri.ee/forum - Форум Программистов!
SELECT определеную строку
« Ответ #11 : 15 Июля 2003, 15:01:11 »
Не в этом дело...

Дело в том что я скриптом разбираю $n`ую строку в масиве и потом кидаю ее в корзину покупок...
сейчас этот работает на текстовом файле вот так:


   
// открыли файл, $n это номер строки
   
$f=file("./shop.txt") or die("файл не найден");
   
// и получили нужную строку с товаром (в массив $o)
   
$o=explode("\\\\",$f[$n]);

   
$id=$o[0];
   if (isset(
$t[all][$id])) return; // если товар уже в корзине - выход

   
$t[all][$id]=$id;    // флаг, благодаря которому, двумя строчками выше
                        // мы определили, что товар уже есть в корзине
   
$t[$id][name]=$o[1]; // наименование
   
$t[$id][info]=$o[2]; // инфо
   
$t[$id][cena]=$o[3]; // и д.р. не значащие данные
   
$t[$id][kol]=1;      // кол-во в начале равно "1 штуке"

а мне надо просто вывести в переменую $o строку из БД!

Как это сделать?
http://proglan.pri.ee/forum - Форум Программистов!

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
SELECT определеную строку
« Ответ #12 : 15 Июля 2003, 16:04:51 »
Xander, есть два направления по поводу назначения первичных ключей: естественные ключи (в данном случае комбинация имя+ник) и искусственные (ID). Эффективность того или иного подхода зависит от конкретной задачи.


новичок, тебе уже сказали, что нет такого понятия как номер строки в базе данных. Физический порядок размещения данных на диске, конечно есть, а порядка строк в таблице - нет. Потому, для того что бы вывести определенную строку , выбираются критерии выборки. Как тебе уже сказали - это может быть искусственно веденный ID, это может быть комбинация имени и ника и т.д.
опередлись по каким тебе критериям нужно выбирать строку и используй дальше SELECT, WHERE, ORDER BY и LIMIT.
На Машине Тьюринга далеко не уедешь.

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
SELECT определеную строку
« Ответ #13 : 15 Июля 2003, 16:12:20 »
fidget
а на каких классах задач эффективнее естественные ключи?
Да, я имел в виду задачи, где естественные ключи составные.
•••Jah\'d never let us down!•••

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
SELECT определеную строку
« Ответ #14 : 15 Июля 2003, 16:17:06 »
Цитировать
новичок:
Вопрос, есть строки:
------------------------------
name | nick
------------------------------
sasha | ibsn
anton | bostaf
kozel | sam takoi
...

Цитировать
новичок:
// открыли файл, $n это номер строки
   $f=file("./shop.txt") or die("файл не найден");
   // и получили нужную строку с товаром (в массив $o)
   $o=explode("\\",$f[$n]);

   $id=$o[0];
   if (isset($t[all][$id])) return; // если товар уже в корзине - выход

   $t[all][$id]=$id;    // флаг, благодаря которому, двумя строчками выше
                        // мы определили, что товар уже есть в корзине
   $t[$id][name]=$o[1]; // наименование
   $t[$id][info]=$o[2]; // инфо
   $t[$id][cena]=$o[3]; // и д.р. не значащие данные
   $t[$id][kol]=1;      // кол-во в начале равно "1 штуке"

Мля, почувствуйте разницу!

У любого товара в реальной жизни есть код, по-другому номенклатура. Номенклатура не обязательно должна располагаться по порядку. Тот тавар, который у тя в корзине, и тот который в БД ты можешь сравнить по номенклатуре, т.е. по его коду, вывод информации из БД осуществляется подобным путем:

До тех пор пока есть в корзине товары
 Начало:
 1. запросом, вывести название, вес, и цвет товара, где его  
 номенклатура равняется той, что у тебя в корзине.
 2. показать результаты запроса к БД
 Конец:

Наш преподаватель баз данных говорил:
Цитировать
изучите предеметную область!!!
работа в Украине

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28