ďťż
 
Re: [Oracle] Sortowanie ďťż
 
Re: [Oracle] Sortowanie
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Re: [Oracle] Sortowanie



Tomasz Wrzodak - 13-11-2005 11:58

  batman_nr1@gazeta.pl napisał(a):
> Witam,
> problem jest tego typu:
> jest tabela w której w jednej kolumnie (załóżmy że jej nazwa to
> "NAZWA_OSOBY") znajdują się dane osoby w formacie "Imię Nazwisko".
> Pytanie jest takie: jak w sposób najbardziej efektywny posortować
> wynik zapytania po *nazwisku* tej osoby (a więc po drugim członie
> wartości zawartej w danej komórce tabeli), przy czym dopuszczalne
> dane w kolumnie "NAZWA_OSOBY" mogą mieć także postać "Imię
> Drugie_Imię Nazwisko" oraz "Nazwisko". W tabeli może znajdowac się
> maksymalnie do kilku milionów wierszy. Oczywiście zapytanie musi być
> zapisane tylko i wyłącznie w postaci jednej klauzuli SELECT * FROM
> NAZWA_TABELI ORDER BY ???.
>

A pierwsza postać normalna? I nie było by problemu...
TW





Tomasz Wrzodak - 13-11-2005 11:58

  Tomasz Wrzodak napisał(a):
> batman_nr1@gazeta.pl napisał(a):
>
>> Witam,
>> problem jest tego typu:
>> jest tabela w której w jednej kolumnie (załóżmy że jej nazwa to
>> "NAZWA_OSOBY") znajdują się dane osoby w formacie "Imię Nazwisko".
>> Pytanie jest takie: jak w sposób najbardziej efektywny posortować
>> wynik zapytania po *nazwisku* tej osoby (a więc po drugim członie
>> wartości zawartej w danej komórce tabeli), przy czym dopuszczalne
>> dane w kolumnie "NAZWA_OSOBY" mogą mieć także postać "Imię
>> Drugie_Imię Nazwisko" oraz "Nazwisko". W tabeli może znajdowac się
>> maksymalnie do kilku milionów wierszy. Oczywiście zapytanie musi być
>> zapisane tylko i wyłącznie w postaci jednej klauzuli SELECT * FROM
>> NAZWA_TABELI ORDER BY ???.
>>
>
> A pierwsza postać normalna? I nie było by problemu...
> TW

Ale jeśli już musisz w ten sposób, to może coś takiego:

create index idx_t on t (substr(name, instr(name, ' ', -1)+1));

select * from t order by substr(name, instr(name, ' ', -1)+1);

(substr(name, instr(name, ' ', -1)+1)) musi być różne od null'a w
zwracanych rekordach (możesz to zapewnić w klauzuli where), gdyż inaczej
Oracle przeprowadzi skan całej tabeli
TW
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kfia-tek.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com