Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> naturalne sortowanie VARCHAR *prosze o pomoc*
Therronis
post 21.11.2003, 21:23:08
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2003
Skąd: New Jersey

Ostrzeżenie: (0%)
-----


nie wiem czy dobrze topic napisalem - mam pytanie : jak zrobic by wyniki zapytania MySQL dawalo wyniki posortowane naturalnie (1,2,12,20) wg kolumny okreslonej jako VARCHAR. dotychczasowe moje starania nie pozwalaja mi osiagnac nic wiecej niz wyniki posortowane tak: 1,12,2,20 - a nie o to mi chodzi. jeszcze jedno - musze miec kolumne oznaczona jako VARCHAR...

prosze o pomoc

PS
nie potrafilem znalezc nic na ten temat na forum i w necie...


--------------------
W jeden dzień siostry z losu się poczęły. Miłość i Śmierć.
Go to the top of the page
+Quote Post
s_w_ir
post 21.11.2003, 21:34:27
Post #2





Grupa: Zarejestrowani
Postów: 315
Pomógł: 1
Dołączył: 6.08.2003
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Ja też miałem taki problem. Zrobiłem tak ż e przewaliłem wszystko do tablic($tablica[] - żeby nie było) i dopiero tam sortowałem.
Sądze tylko że nie będzie to dobre rozwiązanie dla wielomilionowych rekordów sad.gif
Go to the top of the page
+Quote Post
Jabol
post 21.11.2003, 21:39:43
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


mysql na pewno ma funkcje typu atoi(). musisz tylko zdefiniować jaka długość pola jest zarezerowowana na liczbę. Ogólnie możesz też dodać dodatkowe pole sort_ord
Go to the top of the page
+Quote Post
adwol
post 22.11.2003, 01:18:07
Post #4





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


[sql:1:c2a747213c]select pole from tabela order by cast(pole as unsigned);[/sql:1:c2a747213c]
Go to the top of the page
+Quote Post
Therronis
post 22.11.2003, 16:04:50
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2003
Skąd: New Jersey

Ostrzeżenie: (0%)
-----


@adwol : chyba nie moze VARCHAR potraktowac jako UNSIGNED poniewaz UNSIGNED jest chyba zarezerwowane dla kolumn okreslonych jako liczbowe (INT, TINIINT, etc) - wyskakuje taki komunikat

[sql:1:799d1b4f3b]Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource ...[/sql:1:799d1b4f3b]

@Jabol : szukalem funkcji atoi() w manualu, ale jej tam nie ma sad.gif

@s_w_ir : masz racje, ciezko to bedzie sad.gif

hmmm... nie wiem jak to zrobie, chyba cos bede kombinowal z dawaniem do tablicy dwuch rekordow, pozniej sortowaniem tablicy, a po tym listowaniem wg posortowanej tablicy...


--------------------
W jeden dzień siostry z losu się poczęły. Miłość i Śmierć.
Go to the top of the page
+Quote Post
Jabol
post 22.11.2003, 16:09:59
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


@Therronis: bo też nie mówiłem, że jest. Poszukaj jakiejś funkcji która robi integera z asci.
Go to the top of the page
+Quote Post
adwol
post 22.11.2003, 16:21:08
Post #7





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
@adwol : chyba nie moze VARCHAR potraktowac jako UNSIGNED poniewaz UNSIGNED jest chyba zarezerwowane dla kolumn okreslonych jako liczbowe (INT, TINIINT, etc) - wyskakuje taki komunikat

Musiałeś coś źle przepisać. To działa.
Go to the top of the page
+Quote Post
Therronis
post 22.11.2003, 16:45:38
Post #8





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2003
Skąd: New Jersey

Ostrzeżenie: (0%)
-----


@Jabol : funkcja cast() moze spelnic taka funkcje posrednio jak mysle

@adwol : hmm...

[sql:1:4067db782e]SELECT *
FROM tabela
ORDER BY cast(pole AS UNSIGNED)
DESC
LIMIT 500, 700;[/sql:1:4067db782e]

czy to poprawnie zapisane? bo nie jestem pewnien :/ nie wiem czy moge miec tez starsza baze danych, ale watpie.


--------------------
W jeden dzień siostry z losu się poczęły. Miłość i Śmierć.
Go to the top of the page
+Quote Post
adwol
post 22.11.2003, 17:20:53
Post #9





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
[sql:1:5fcd2b6547]SELECT *
FROM tabela
ORDER BY cast(pole AS UNSIGNED)
DESC
LIMIT 500, 700;[/sql:1:5fcd2b6547]

czy to poprawnie zapisane? bo nie jestem pewnien :/ nie wiem czy moge miec tez starsza baze danych, ale watpie.

Tak.
Spróbuj wpisać to bezpośrednio w shellowym kliencie albo zrób w PHPie:
[php:1:5fcd2b6547]<?php
print mysql_error();
?>[/php:1:5fcd2b6547]
i pokaż jaki masz błąd.
U mnie na 4.0.15 działa to bezproblemowo.
Go to the top of the page
+Quote Post
Therronis
post 22.11.2003, 17:32:40
Post #10





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2003
Skąd: New Jersey

Ostrzeżenie: (0%)
-----


[php:1:35af554ee8]<?php
$result = mysql_query ("
SELECT *
FROM klienci
ORDER BY cast($sort_ AS UNSIGNED)
$order_
LIMIT $i, $ii");
?>[/php:1:35af554ee8]

[sql:1:35af554ee8]You have an error in your SQL syntax near '(KB_minuta AS UNSIGNED) LIMIT 0, 200' at line 4[/sql:1:35af554ee8]

KB_minuta to wartosc zmiennej $sort_


--------------------
W jeden dzień siostry z losu się poczęły. Miłość i Śmierć.
Go to the top of the page
+Quote Post
Jabol
post 22.11.2003, 17:34:56
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


a jaka wersja ( [manual:c97054a238]mysql_get_server_info()[/manual:c97054a238] )?
Go to the top of the page
+Quote Post
adwol
post 22.11.2003, 17:41:28
Post #12





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
KB_minuta to wartosc zmiennej $sort_

A co masz w zmiennej $order_? Nie dublujesz sobie czasami frazy ORDER BY? Wypisz sobie gdzieś dokładnie to co dostaje mysql_query (z rozwiniętymi wartościami zmiennych $sort_ i $order_).
Go to the top of the page
+Quote Post
Therronis
post 22.11.2003, 17:48:40
Post #13





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2003
Skąd: New Jersey

Ostrzeżenie: (0%)
-----


wersja 3.23.55 :/

w zmiennej order_ mam wartosc DESC lub nie mam nic

mysle ze to jednak wersja sad.gif

jednakze dziekuje za pomoc smile.gif


--------------------
W jeden dzień siostry z losu się poczęły. Miłość i Śmierć.
Go to the top of the page
+Quote Post
DeyV
post 22.11.2003, 23:20:21
Post #14





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Therronis - tak czy inaczej - wydrukuj nam to zapytanie, zwykłym
[php:1:580cc2d703]<?php
$pyt= "SELECT ... ";
mysql_query ($pyt) or die ( "Bład w zapytaniu : ". $pyt );
?>[/php:1:580cc2d703]


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
uboottd
post 24.11.2003, 14:34:34
Post #15





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

Ostrzeżenie: (0%)
-----


Cytat
wersja 3.23.55 :/
mysle ze to jednak wersja sad.gif

Tak, cast(cos as typ) wystepuje od wersji4. Jednak na szybko mozesz zastosowac takie wyjatkowo chamskie zagranie:
[sql:1:0a0d65afe1]
SELECT *
FROM tabela
ORDER BY pole+0 DESC
LIMIT 500, 700;
[/sql:1:0a0d65afe1]
Go to the top of the page
+Quote Post
pkwiatkowski
post 13.07.2009, 15:59:04
Post #16





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.02.2008

Ostrzeżenie: (0%)
-----


Ja chcialem odswiezyc temat bo nie znalazlem odpowiedzi na ten problem, moze dojdziemy do tego na przykladzie mojego:

mam w kolumnie dane:

WRA38
WAR12
WAR102
CH12
CH4

No i chcialbym zeby to posortowalo tak:

CH4
CH12
WRA12
WRA38
WAR102

Da jakoś radę to zrobić SQLem ?


--------------------
Go to the top of the page
+Quote Post
erix
post 13.07.2009, 16:23:22
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://forums.codewalkers.com/database-hel...sql-832007.html


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
pkwiatkowski
post 13.07.2009, 17:45:16
Post #18





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.02.2008

Ostrzeżenie: (0%)
-----


Cytat(erix @ 13.07.2009, 17:23:22 ) *


poczytam zobacze co tu zamiesciles.
Dzieki za odpowiedz na problem.

edit
Jednak to nie zdalo egzaminu w moim przypadku sad.gif

chyba jednak cos w PHP wymysle zeby to sortowac.

Ten post edytował pkwiatkowski 13.07.2009, 18:33:09


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 01:46