Thread View: pl.comp.lang.php
18 messages
18 total messages
Started by Piotr Burda
Tue, 28 Aug 2001 12:46
select zaczynajace sie na litery
Author: Piotr Burda
Date: Tue, 28 Aug 2001 12:46
Date: Tue, 28 Aug 2001 12:46
9 lines
1265 bytes
1265 bytes
Mam problem, skrypt wyswietla mi z bazy linki (do miejscowosci) jest tego duzo i wyswietlanie trwa dosc dlugo poza tym lista jest zbyt dluga. poniewaz sa to nazwy miejscowosci wiec wpadlem na pomysl ze ogranicze kryterium i podziele liste na grupy np miescowosci od A do F potem od G do L .... i tu powstal problem, jak wykonac select by baza zwracala takie wyniki PHP i MySQl Piotr
Re: select zaczynajace sie na litery
Author: Rafal Neumann
Date: Tue, 28 Aug 2001 12:57
Date: Tue, 28 Aug 2001 12:57
15 lines
1469 bytes
1469 bytes
Użytkownik "Piotr Burda" <poczta@narty.pl> napisał w wiadomości news:9mg3p5$fd0$1@news.tpi.pl... > Mam problem, skrypt wyswietla mi z bazy linki (do miejscowosci) > jest tego duzo i wyswietlanie trwa dosc dlugo poza tym lista jest zbyt > dluga. > poniewaz sa to nazwy miejscowosci wiec wpadlem na pomysl ze ogranicze > kryterium i podziele liste na grupy > np miescowosci od A do F potem od G do L .... zrob kolumny A-F G-L i tak daje do kazdej wpisz dane a pozniej pobieraj tylko cala kolumne Rafal Neumann
Re: select zaczynajace sie na litery
Author: Piotr Burda
Date: Tue, 28 Aug 2001 13:07
Date: Tue, 28 Aug 2001 13:07
11 lines
1158 bytes
1158 bytes
> > > zrob kolumny A-F G-L i tak daje do kazdej wpisz dane a pozniej pobieraj > tylko cala kolumne > > Rafal Neumann > To rozwiazanie strasznie by utrudnilo pozniej dopisywanie nowych danych, no i wymagalo by zmiany aktualnych. Piotr
Re: select zaczynajace sie na litery
Author: Piotr Burda
Date: Tue, 28 Aug 2001 13:08
Date: Tue, 28 Aug 2001 13:08
14 lines
1178 bytes
1178 bytes
> SELECT > nazwa > FROM > miejscowosci > WHERE > (LOWER(nazwa) REGEXP '^[abcćdef].*') > ORDER BY nazwa > > > P.S. Jeśli ktoś zna wydajniejszy sposób to proszę o korektę. > > slawek- czy ta metoda znacznie wplynie na wydajnosc? Piotr
Re: select zaczynajace sie na litery
Author: slawek-
Date: Tue, 28 Aug 2001 14:01
Date: Tue, 28 Aug 2001 14:01
19 lines
1259 bytes
1259 bytes
"Piotr Burda" <poczta@narty.pl> napisał:
> poniewaz sa to nazwy miejscowosci wiec wpadlem na pomysl ze ogranicze
> kryterium i podziele liste na grupy
> np miescowosci od A do F potem od G do L ....
> i tu powstal problem, jak wykonac select by baza zwracala takie wyniki
> PHP i MySQl
SELECT
nazwa
FROM
miejscowosci
WHERE
(LOWER(nazwa) REGEXP '^[abcćdef].*')
ORDER BY nazwa
P.S. Jeśli ktoś zna wydajniejszy sposób to proszę o korektę.
slawek-
Re: select zaczynajace sie na litery
Author: Michal Sznajder
Date: Tue, 28 Aug 2001 15:08
Date: Tue, 28 Aug 2001 15:08
26 lines
1696 bytes
1696 bytes
Witam Napisane przez "Piotr Burda" <poczta@narty.pl> w pl.comp.lang.php >> SELECT >> nazwa >> FROM >> miejscowosci >> WHERE >> (LOWER(nazwa) REGEXP '^[abcćdef].*') >> ORDER BY nazwa >> P.S. Jeśli ktoś zna wydajniejszy sposób to proszę o korektę. Warto tez sprawdzic cos takiego select .... where lower(nazwa) like 'a%' or lower(nazwa) like 'b%' ... itd > czy ta metoda znacznie wplynie na wydajnosc? Ograniczy liczbe rekordow w zapytaniu wynikowym wiec wyswietlanie powinno odbywac sie szybciej ... -- Pozdrawiam Michal "Misza" Sznajder [ http://www.fxmedia.com.pl/ ]
Re: select zaczynajace sie na litery
Author: 7th Wojciech Jukowski
Date: Tue, 28 Aug 2001 15:28
Date: Tue, 28 Aug 2001 15:28
11 lines
1122 bytes
1122 bytes
witam, Piotr Burda wrote: > np miescowosci od A do F potem od G do L .... > i tu powstal problem, jak wykonac select by baza zwracala takie wyniki select .. from tabelka where miejscowosc >'g'; select .. from tabelka where miejscowosc <'g'; -- wojciech.jukowski
Re: select zaczynajace sie na litery
Author: Andrzej Kaczmarek
Date: Tue, 28 Aug 2001 15:31
Date: Tue, 28 Aug 2001 15:31
19 lines
1412 bytes
1412 bytes
slawek- napisał(a): > SELECT > nazwa > FROM > miejscowosci > WHERE > (LOWER(nazwa) REGEXP '^[abcćdef].*') (LOWER(LEFT(nazwa, 1)) BETWEEN 'a' AND 'f') Na oko powinno być minimalnie szybsze, ponieważ nie ma regexpa, LOWER jest tylko dla jednego znaku, a BETWEEN to zwykłe (szybkie) porównanie. > ORDER BY nazwa -- pozdrawiam, Andrzej
Re: select zaczynajace sie na litery
Author: slawek-
Date: Tue, 28 Aug 2001 16:46
Date: Tue, 28 Aug 2001 16:46
12 lines
1366 bytes
1366 bytes
"Andrzej Kaczmarek" <ak@wroc.vulcan.pl> napisał: > > (LOWER(nazwa) REGEXP '^[abcćdef].*') > > (LOWER(LEFT(nazwa, 1)) BETWEEN 'a' AND 'f') > > Na oko powinno być minimalnie szybsze, ponieważ nie ma regexpa, LOWER jest > tylko dla jednego znaku, a BETWEEN to zwykłe (szybkie) porównanie. Tylko, że to chyba nie wybierze polskich znaków (nie mogę sprawdzić teraz). slawek-
Re: select zaczynajace sie na litery
Author: Andrzej Kaczmarek
Date: Tue, 28 Aug 2001 17:23
Date: Tue, 28 Aug 2001 17:23
23 lines
1851 bytes
1851 bytes
slawek- napisał(a):
>> > (LOWER(nazwa) REGEXP '^[abcćdef].*')
^^^^^^^
>>
>> (LOWER(LEFT(nazwa, 1)) BETWEEN 'a' AND 'f')
>>
>> Na oko powinno być minimalnie szybsze, ponieważ nie ma regexpa, LOWER jest
>> tylko dla jednego znaku, a BETWEEN to zwykłe (szybkie) porównanie.
>
> Tylko, że to chyba nie wybierze polskich znaków (nie mogę
> sprawdzić teraz).
No nie wybierze, bo szuka po ASCII, ale mozna by to tak jeszcze zrobić:
(LOWER(LEFT(nazwa, 1)) IN ('a', 'b' [...], 'Ą', 'Ć', 'Ę', 'ą', 'ć', 'ę')
jak twierdzi manual IN jest bardzo szybkie wieć chyba byłoby oki.
ps. Twoje też nie wybierze ;)
--
pozdrawiam,
Andrzej
Re: select zaczynajace sie na litery
Author: slawek-
Date: Tue, 28 Aug 2001 18:22
Date: Tue, 28 Aug 2001 18:22
9 lines
1300 bytes
1300 bytes
"Andrzej Kaczmarek" <ak@wroc.vulcan.pl> napisał: >> > (LOWER(nazwa) REGEXP '^[abcćdef].*') > ps. Twoje też nie wybierze ;) Hmm... przecież wymieniam wszystkie potrzebne literki. Poza tym to co podałem działa w jednym z projektów :-) slawek-
Re: select zaczynajace sie na litery
Author: Andrzej Kaczmarek
Date: Tue, 28 Aug 2001 19:33
Date: Tue, 28 Aug 2001 19:33
14 lines
1582 bytes
1582 bytes
slawek- napisał(a): >>> > (LOWER(nazwa) REGEXP '^[abcćdef].*') >> ps. Twoje też nie wybierze ;) > > Hmm... przecież wymieniam wszystkie potrzebne literki. Poza tym to co > podałem działa w jednym z projektów :-) Mamy jeszcze wśród literek od 'a' do 'f' takie krzaczki jak 'ą' i 'ę', a poza tym LOWER nie zamienia np. 'Ą' na 'ą' :) -- pozdrawiam, Andrzej
Re: select zaczynajace sie na litery
Author: slawek-
Date: Tue, 28 Aug 2001 21:45
Date: Tue, 28 Aug 2001 21:45
11 lines
1501 bytes
1501 bytes
"Andrzej Kaczmarek" <ak@wroc.vulcan.pl> napisał: > Mamy jeszcze wśród literek od 'a' do 'f' takie krzaczki jak 'ą' i 'ę', A tutaj niedopowiedzenie. Nie ma miast zaczynających się na ą i ę zatem wykluczyłem te literki ze względu na wydajność. > a poza tym LOWER nie zamienia np. 'Ą' na 'ą' :) U mnie zamienia. Przekompilowałem sobie mysqla z obsługą latin2. slawek-
Re: select zaczynajace sie na litery
Author: Andrzej Kaczmarek
Date: Tue, 28 Aug 2001 22:30
Date: Tue, 28 Aug 2001 22:30
18 lines
1838 bytes
1838 bytes
slawek- napisał(a): >> Mamy jeszcze wśród literek od 'a' do 'f' takie krzaczki jak 'ą' i 'ę', > > A tutaj niedopowiedzenie. Nie ma miast zaczynających się na ą i ę zatem > wykluczyłem te literki ze względu na wydajność. A faktycznie, chodziło o nazwy miejscowości, nie zauważyłem - zwracam honor. >> a poza tym LOWER nie zamienia np. 'Ą' na 'ą' :) > > U mnie zamienia. Przekompilowałem sobie mysqla z obsługą latin2. A ja się na Win32 nie będę w takie klocki bawił (a przydałoby się) -- pozdrawiam, Andrzej
Re: select zaczynajace sie na litery
Author: Michal Sznajder
Date: Wed, 29 Aug 2001 07:34
Date: Wed, 29 Aug 2001 07:34
27 lines
1860 bytes
1860 bytes
Witam Napisane przez sznajder@fxmedia.com.pl (Michal Sznajder) w pl.comp.lang.php > Napisane przez "Piotr Burda" <poczta@narty.pl> w pl.comp.lang.php >>> SELECT >>> nazwa >>> FROM >>> miejscowosci >>> WHERE >>> (LOWER(nazwa) REGEXP '^[abcćdef].*') >>> ORDER BY nazwa > select .... > where lower(nazwa) like 'a%' or lower(nazwa) like 'b%' ... itd Oczywiscie bzdure walnolem 8-). Powinno byc cos takiego: select .... where nazwa >= 'A' and nazwa >= 'G' Musisz tez pokombinowac z lower jesli masz wyrazy o roznych wielkosciach liter. Jesli masz obsluge odpowiednich collatow to powinno dzialac tez z polskimi literami. -- Pozdrawiam Michal "Misza" Sznajder [ http://www.fxmedia.com.pl/ ]
Re: select zaczynajace sie na litery
Author: 7th Wojciech Jukowski
Date: Wed, 29 Aug 2001 08:39
Date: Wed, 29 Aug 2001 08:39
19 lines
1585 bytes
1585 bytes
witam, Michal Sznajder wrote: > where nazwa >= 'A' and nazwa >= 'G' > > Musisz tez pokombinowac z lower jesli masz wyrazy o roznych wielkosciach > liter. prawde powiedziawszy czuje sie dziwnie. czytam wlasnie rozne dywagacje na temat stosowania lower, likeow in.. czy ktos moze mi powiedziec czemu nikt nie wspomnial o zwyklym przyrownaniu (badz co jest w nim nieoptymalnego): .. nazwa >'a' and nazwa<'h' - od a oraz A do g i G .. nazwa >'h' and nazwa<'p' - od h oraz H do o i o oraz Ó .. nazwa >'p' - reszta -- wojciech.jukowski
Re: select zaczynajace sie na litery
Author: Michal Sznajder
Date: Wed, 29 Aug 2001 10:24
Date: Wed, 29 Aug 2001 10:24
27 lines
2320 bytes
2320 bytes
Witam Napisane przez 7th Wojciech Jukowski <wojciech@jukowski.com> w pl.comp.lang.php > Michal Sznajder wrote: >> where nazwa >= 'A' and nazwa >= 'G' >> Musisz tez pokombinowac z lower jesli masz wyrazy o roznych wielkosciach >> liter. > prawde powiedziawszy czuje sie dziwnie. czytam wlasnie rozne dywagacje > na temat stosowania lower, likeow in.. czy ktos moze mi powiedziec czemu > nikt nie wspomnial o zwyklym przyrownaniu (badz co jest w nim > nieoptymalnego): > .. nazwa >'a' and nazwa<'h' - od a oraz A do g i G Bo to zalezy od bazy. Np. IB sa tak zwane collat'y (sposoby sortowan znakow). Normalnie kolejnosc literek idzie tak a...zA...Z<polskie>. Mozna sobie wlaczyc kolejnosc z uwzglednieniem polskich liter albo np. taka aA.....zZ (tez z uwzglednieniem polskich liter ale to chyba w FB). Nie wiem jak jest w MySQL'u. Jesli tam nie ma mechanizmu collatow to trzeba kombinowac z lower (ew. upper) albo pisac tak ... where (nazwa > 'a' and nazwa < 'h') or (nazwa > 'A' and nazwa < 'H') -- Pozdrawiam Michal "Misza" Sznajder [ http://www.fxmedia.com.pl/ ]
Re: select zaczynajace sie na litery
Author: 7th Wojciech Jukowski
Date: Wed, 29 Aug 2001 12:47
Date: Wed, 29 Aug 2001 12:47
12 lines
1410 bytes
1410 bytes
witam, Michal Sznajder wrote: > Bo to zalezy od bazy. Np. IB sa tak zwane collat'y (sposoby sortowan > znakow) zgadza sie jednak pozwole sobie przytoczyc zdanie z pierwszego listu w tym watku " by baza zwracala takie wyniki PHP i MySQl". ja sprawdzilem na pg i mysql. najwyrazniej dziala. -- wojciech.jukowski
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads