|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Кад да ... в mySQL
|
|
Автор |
desso__ (непознат
) |
Публикувано | 17.01.06 16:53 |
|
Здравейте,
Искам да направя един селект, но в една от колоните да mySQL да ми подава номера на реда.
Пример: select id,name,?num? as num from table;
id, name, num
-----------------
1 name 1
7 namme 2
22 name22 3
....
10x
| |
|
Ми слагаш си в таблизата autoincrement....
Bеer? Mоre?
| |
|
не става въпрос за INSERT, а за SELECT
искам mySQL да ми връща номера на реда ... ако сложа уникално ID (AUTOINCREMENT), това не ми е гаранция, че IDто ще ми е поредно, да не говорим, че SELECT-a може да не е подреден по ID...
Под номер на ред искам да кажа, примерно ако направя select ... LIMIT 0,10
първия ред да има: num=1, втория num=2, третия num=3
Съгласен съм, че това може да се изведе в скрипта извън MySQL примерно с PHP да си показвам номера на реда, но искам да направя оптимизация и ми трябва вариянт директно от MySQL да идва стойността....
благодаря ви предварително
| |
|
че дори да намериш начин да ползваш номера на реда, е кофти номер.
БД са направени да ти връщат каквото искаш, без значение как се пази, или съхранява.
Без значение на коя част на диска.....
Bеer? Mоre?
| |
|
Виж .
Everything louder than everything else...
| |
Тема
|
Re: Такова живитно нема ...
[re: desso__]
|
|
Автор |
salle (един такъв) |
Публикувано | 17.01.06 23:56 |
|
Няма "номер на ред" в Релационния модел.
Таблиците са дефинирани като неподредени множества т.е. сървърът е в правото си да ги съхранява и показва в произволен ред. Произволен = какъвто намери за добре а не непременно случаен.
Ако нямаш ORDER BY клауза една и съща заявка изпълнена няколко пъти може да ти връща резултата всеки път в различна подредба.
Колкото до "номера на реда от резултата" това винаги е най-лесно да се прави в клиентската част. Просто така или иначе въртиш някакаъв цикъл за да обработиш редовете (дори и ако "обработката" се състои от единствен print()), а като въртиш цикъл какво по просто от това да сложиш и брояч
| |
|
10x a lot
Точно това търсех:
set @x := 0;
SELECT @x := @x+1 as num,ID, NAME FROM test;
Върши чудесна работа. Сега разбира се, се опитвам да го направя да е само в едно query
set @x := 0;
SELECT IF(@x iS NULL,@x := 0,1) as xx,@x := @x+1 as num,ID, NAME FROM test;
но нещо не се получава.... винаги IF връща, че @x е NULL...
пробвах и с SELECT CASE THEN още по голям мармалад :-)
ако някой измисли някоя брилянтна идея да пише! -:)
Поздрави
| |
|
10x a lot
Точно това търсех:
set @x := 0;
SELECT @x := @x+1 as num,ID, NAME FROM test;
Върши чудесна работа. Сега разбира се, се опитвам да го направя да е само в едно query
SELECT IF(@x iS NULL,@x := 0,1) as xx,@x := @x+1 as num,ID, NAME FROM test;
но нещо не се получава.... винаги IF връща, че @x е NULL...
пробвах и с SELECT CASE THEN още по голям мармалад :-)
ако някой измисли някоя брилянтна идея да пише! -:)
Поздрави
| |
Тема
|
Re: Такова живитно нема ...
[re: salle]
|
|
Автор |
desso__ (непознат
) |
Публикувано | 18.01.06 12:21 |
|
salle,
Ясно е, че може да се направи извън mySQL....
Въпроса е принципен, ако не ме разбираш ..... :-) не коментирай..... и въобще защо ги даваш тези обяснения не мога да разбера, никой не пита за ORDER на записите и т.н.
ето такава заявка си търсех
set @x := 0;
SELECT @x := @x+1 as num,ID, NAME FROM test;
Поздрави
| |
Тема
|
Re: За да те разберат ...
[re: desso__]
|
|
Автор |
salle (един такъв) |
Публикувано | 18.01.06 13:34 |
|
... трабва да обясниш какво имаш предвид.
Като кажеш:
"но в една от колоните да mySQL да ми подава номера на реда."
"номера на реда" може да се тълкува по различни начини.
А като ти е толкова ясно, че може да се направи в от страната на клиента защо въобще питаш?
Какъв е смисъла да товариш сървъра и връзката между сървъра и клиента с напълно излишна информация?
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|