Общие > Базы данных
SELECT определеную строку
Xander:
Yukko
Это скорее к fidget вопрос, она лучше меня в этом разбирается.
Но я бы с составными ключами связываться не стал. К примеру работать они должны ощутимо медленнее, чем численный ID. Или вот, допустим, надо тебе передать ID скрипту. С числом все ясно, а вот с такой парой уже сложнее - а вдруг там ники на руском?..
А в какой кодировке клиент их посылает?...
В общем возможны проблемы.
А автор темы так и не сказал, что ему в конечном итоге нужно.
новичок:
Не в этом дело...
Дело в том что я скриптом разбираю $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 строку из БД!
Как это сделать?
fidget:
Xander, есть два направления по поводу назначения первичных ключей: естественные ключи (в данном случае комбинация имя+ник) и искусственные (ID). Эффективность того или иного подхода зависит от конкретной задачи.
новичок, тебе уже сказали, что нет такого понятия как номер строки в базе данных. Физический порядок размещения данных на диске, конечно есть, а порядка строк в таблице - нет. Потому, для того что бы вывести определенную строку , выбираются критерии выборки. Как тебе уже сказали - это может быть искусственно веденный ID, это может быть комбинация имени и ника и т.д.
опередлись по каким тебе критериям нужно выбирать строку и используй дальше SELECT, WHERE, ORDER BY и LIMIT.
Xander:
fidget
а на каких классах задач эффективнее естественные ключи?
Да, я имел в виду задачи, где естественные ключи составные.
Yukko:
--- Цитировать ---новичок:
Вопрос, есть строки:
------------------------------
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. показать результаты запроса к БД
Конец:
Наш преподаватель баз данных говорил:
--- Цитировать ---изучите предеметную область!!!
--- Конец цитаты ---
Навигация
Перейти к полной версии