Pitanje oko jednog Oracle SELECT-a

poruka: 5
|
čitano: 1.278
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
12 godina
neaktivan
offline
Pitanje oko jednog Oracle SELECT-a

Dakle treba poredati knjige po žanru, prvo po THRILLER, pa po CRIME, pa HISTORY i onda sve ostale.

Ovo je rješenje iz knjige:

select * from books order by decode(genre,'THRILLER',1 ,'CRIME',2,'HISTORY',3,4);

 

I vraća točno:

  ID AUTHOR_ID TITLE                                PRICE P_P GENRE      AVAILABLE
---- --------- ------------------------------------ ----- --- ---------- ---------
  10        11 THE FIRM                                25 2.85 THRILLER   Y        
  35        46 CARRIBEAN                            18.35 2.85 THRILLER   Y        
  37        11 THE CLIENT                            18.8 1.85 THRILLER   Y        
  38        30 THE SCORPIO ILLUSION                 19.95 2.85 THRILLER   Y        
  46        31 THE FIST OF GOD                       33.9 2.85 THRILLER   Y        
  48        49 AS THE CROW FLIES                    28.22 1.3 THRILLER   Y        
  50        43 ROSEMARY'S BABY                      13.05 1.85 THRILLER   Y        
   7        31 THE DAY OF THE JACKAL                   13 1.45 THRILLER   Y        
  20        11 TIME TO KILL                         16.95 2.85 THRILLER   Y        
   8        46 MEXICO                               18.35 3.6 THRILLER   Y        
  19        68 KISSING THE GUNNER'S DAUGHTER        50.85 3.6 CRIME      Y        
  34        68 THE CROCODILE BIRD                    59.1 1.85 CRIME      Y        
  45        18 MURDER ON THE ORIENT-EXPRESS         47.85 1.85 CRIME      Y        
  43        18 THE MOUSETRAP AND OTHER PLAYS        48.45 3.6 CRIME      Y        
  44        18 AND THEN THERE WERE NONE             47.85   1 CRIME      Y        
 148         1 LKGH                                   855   2 CRIME      Y        
  63         1 TWILIGHT OVER SZECHUAN                26.5 2.5 HISTORY    Y        
   5         1 WILD SWANS                            20.7 2.85 HISTORY    Y        
  61         1 THE LIONESS                             90 2.5 HISTORY    Y        
 147        42 LJKJ                                    23   1 ADVENTURE  Y        
 200        17 THE BOOK                             12.88 1.5 ADVENTURE  N        
  57           BOOKCLUB CALENDAR                    11.91   1            Y        
  55         4 A SON OF THE CIRCUS                   43.5 1.25 FICT.LIT.  Y        
  53        42 EINSTEIN'S DREAMS                     22.5 1.85 FICT.LIT.  Y        
  52        66 BLUE DEEP                            48.34   1 ADVENTURE  Y        
  32        27 THE LORD OF THE RINGS                33.45 3.6 SF/FANTASY Y        
  30        23 GAI-JIN                              46.24 3.6 ADVENTURE  Y        
  25        55 FALLEN SKIES                          20.2 3.6 ROMANCE    Y        
  23        17 HOW LATE IT WAS, HOW LATE             20.2 1.65 FICT.LIT.  Y        
  17        13 THE ROBBER BRIDE                     16.85 1.65 FICT.LIT.  Y        
  16        63 BRAZIL                                18.1 1.85 FICT.LIT.  Y        
  14        46 MY LOST MEXICO                       15.95 2.85 FICT.LIT.  Y        
  12        57 THE DRAWINGS OF PICASSO              13.62 2.85 ART        Y        
   4        77 THE BLOOD OF ROSES                    33.5 2.85 SF/FANTASY Y        
   2         4 TRYING TO SAVE PIGGY SNEED           15.95   1 FICT.LIT.  Y        
 160        42 LKFJDSLFJ                               32   1 ADVENTURE  Y        
 161         1 LOTR I                                20.7 4.4 FANTASY    Y        
   1        58 JAMES BOND                                 2.85 ADVENTURE  Y        

Evo 10 redaka iz tablice:

  ID AUTHOR_ID TITLE                          PRICE P_P     GENRE      AVAILABLE
---- --------- ------------------------------------ ----- --- ---------- ---------
 161         1 LOTR I                                20.7 4.4 FANTASY    Y        
   1        58 JAMES BOND                                 2.85 ADVENTURE  Y        
   2         4 TRYING TO SAVE PIGGY SNEED           15.95   1 FICT.LIT.  Y        
   4        77 THE BLOOD OF ROSES                    33.5 2.85 SF/FANTASY Y        
   5         1 WILD SWANS                            20.7 2.85 HISTORY    Y        
  61         1 THE LIONESS                             90 2.5 HISTORY    Y        
  63         1 TWILIGHT OVER SZECHUAN                26.5 2.5 HISTORY    Y        
   7        31 THE DAY OF THE JACKAL                   13 1.45 THRILLER   Y        
   8        46 MEXICO                               18.35 3.6 THRILLER   Y        
  10        11 THE FIRM                                25 2.85 THRILLER   Y        

Mene sad zanima, kako to uopće radi? Šta nije kada se stavi order by [neki_broj], da taj neki_broj označava redni broj stupca po kojem će se sortirati upit?

 

Hvala

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Pitanje oko jednog Oracle SELECT-a

Evo nikada radio s oracleom ali jedan upit googleu (oracle decode) i misterija rijesena.

 

znaci sintaksa za decode je:

decode( expression , search , result [, search , result]... [, default] )

Dakle tvoj expression je genre, uzimas vrijednosti od tamo i trazis thriller, gdje ga nadje vraca broj 1, drugi izraz je ca crime i zadnji je default, ono što vraćaš za sve ostale žanrove.

 

I onda it orderby upit fino sortira po tim brojevima

 

 

Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: Pitanje oko jednog Oracle SELECT-a
Dr. Zoidberg kaže...

Evo nikada radio s oracleom ali jedan upit googleu (oracle decode) i misterija rijesena.

 

znaci sintaksa za decode je:

decode( expression , search , result [, search , result]... [, default] )

Dakle tvoj expression je genre, uzimas vrijednosti od tamo i trazis thriller, gdje ga nadje vraca broj 1, drugi izraz je ca crime i zadnji je default, ono što vraćaš za sve ostale žanrove.

 

I onda it orderby upit fino sortira po tim brojevima

 

 

Gle, znam ja šta decode radi. Stvar je u tome da kad ti stavis order by [n], onda ti se rezultat ispiše poredan prema stupcu s rednim brojem "n". Ovdje nije takav slucaj, mene zanima zasto?

12 godina
neaktivan
offline
Re: Pitanje oko jednog Oracle SELECT-a

Zato jer decode(genre,'THRILLER',1 ,'CRIME',2,'HISTORY',3,4) nije cijeli broj, nego izraz. Rezultati upita se sortiraju po vrijednosti tog izraza.

 

17 godina
offline
Pitanje oko jednog Oracle SELECT-a

Da ne otvaram novu temu...

Imam jedan problem oko upita.

 

Imam kolonu šifra gdje su polja dužine 2,4,6,8 znakova.

Kako napisati select da mi vrati samo polja dužine 6 znakova? Probao sam unutar where uvijeta staviti where length(sifra) = 6 ali ne radi. Sa trim mi vraća dužine do 6 uključujući i 2 i 4 dužine.

 

edit:

riješio sa

length(trim(sifra,1,6) = 6

'Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran' - Einstein ----- www.cigoff.eu -----
Poruka je uređivana zadnji put uto 7.5.2013 15:20 (Pero Dinamit).
Moj PC  
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice