![]() |
![]() ![]() |
![]() |
![]()
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ć.
|
|
|
![]()
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 ![]() |
|
|
![]()
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
|
|
|
![]()
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]
|
|
|
![]()
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 ![]() @s_w_ir : masz racje, ciezko to bedzie ![]() 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ć.
|
|
|
![]()
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.
|
|
|
![]()
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. |
|
|
![]()
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ć.
|
|
|
![]()
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. |
|
|
![]()
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ć.
|
|
|
![]()
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] )?
|
|
|
![]()
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_). |
|
|
![]()
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 ![]() jednakze dziekuje za pomoc ![]() -------------------- W jeden dzień siostry z losu się poczęły. Miłość i Śmierć.
|
|
|
![]()
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..."
|
|
|
![]()
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 ![]() 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] |
|
|
![]()
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 ? -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
-------------------- ![]() 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! |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
poczytam zobacze co tu zamiesciles. Dzieki za odpowiedz na problem. edit Jednak to nie zdalo egzaminu w moim przypadku ![]() chyba jednak cos w PHP wymysle zeby to sortowac. Ten post edytował pkwiatkowski 13.07.2009, 18:33:09 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 01:46 |