Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie po liczbach w polu tekstowym
damianos
post 21.03.2007, 12:22:41
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 11.03.2007

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


Witam ponownie! W polu(varchar) o nazwie "pozycja" mam rekordy o następujących nazwach.

Kod
pozycja. 1. Tytul
pozycja. 3. Tytul
pozycja. 13. Tytul
pozycja. 25. Tytul


Mam w związku z tym dwa pytania:
-jak powinno wyglądać zapytanie, które zwróci rekordy z pola "pozycja" posortowane po numerach występujących w ich nazwach,
-czy można to osiągnąć "doklejając" do już gotowego zapytania odpowiednio spreparowana klauzulę ORDER BY?
Go to the top of the page
+Quote Post
sf
post 21.03.2007, 12:31:23
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


A próbowałeś wyciągnać wyrażeniem regularnym te liczby w klauzli ORDER BY? snitch.gif


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
damianos
post 21.03.2007, 13:14:57
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 11.03.2007

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


gdybym wiedział jak użyć wyrażeń regularnych w stylu: ORDER BY 'wyrażenie regularne' , to zapewne bym spróbował. Jak się to robi?

Ten post edytował damianos 21.03.2007, 13:20:42
Go to the top of the page
+Quote Post
prond
post 21.03.2007, 15:21:44
Post #4





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Moim zdaniem jeżeli chcesz sortować dane z tej tabeli na podstawie pewnego podstringu to powinieneś "wyrzucić" go do osobnej kolumny.

W ten sposób nie będzie już tak drastycznie złamana pierwsza postać normalna, zapytania będą na 100% szybsze.

Proponuje Ci dodać nową kolumnę, a w PHPie zrobić w pętli update tej tabli korzystając z prostego wyrażenia regularnego :

  1. <?php
  2. $intPosition = (int)preg_replace("/[^0-9]/", '', $row['pozycja']);
  3. ?>


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
Go to the top of the page
+Quote Post
php programmer
post 21.03.2007, 16:21:22
Post #5





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


A co zwykłe ORDER BY nie wystarczy?
Przecież nie ma ograniczenia jedynie do sortowania kolumn liczbowych.

Ten post edytował php programmer 21.03.2007, 16:21:53
Go to the top of the page
+Quote Post
Kicok
post 21.03.2007, 16:24:30
Post #6





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


ale ORDER BY sortuje dane tekstowe alfabetycznie, np:

Kod
1
2
20
24
3
5
53
533
534
6
7


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
damianos
post 21.03.2007, 20:39:07
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 11.03.2007

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


@kicok: dokładnie tak! A ze względu na ograniczenia innego typu nie jestem w stanie ingerować w kod całego zapytania. Jedyne co mogę, to doleić na końcu "ORDER BY"
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: 15.07.2025 - 09:46