Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 5.280 pregleda

Najnovija ↓

Order By veći od ... 03.06.2008. u 20:18 · pre 224 meseca #1
Recimo da imam upis brojeva u bazu od 1 do 10.

Želim da napravim redosled od 5 pa na dalje, pa kada dođe do kraja, krene od manjih brojeva, tako da mi rezultat bude:

5, 6, 7, 8, 9, 10, 1, 2, 3, 4

Išao sam nekim optimističkim putem ORDER BY brojevi > 5, ali ništa :D

Ima li rešenja? tnx
Re: Order By veći od ... 03.06.2008. u 20:29 · pre 224 meseca #2
Code:
ORDER BY (brojevi+5) % 10
napomena: % = mod, ostatak pri celobrojnom deljenju
Potpis
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Re: Order By veći od ... 03.06.2008. u 22:39 · pre 224 meseca #3
Hvala na brzom odgovoru, međutim, brojevi su navedeni kao primer inače sam mislio do poslednjeg u nizu.

Proba samo da stavim
Code:
ORDER BY (brojevi<5)

bez % 10 i dobio sam to što sam tražiopočeo je listu sa brojem 5 otišao do poslednje (u ovom slučaju 10) i nastavio sa 1.

Onda sam probao isto to da primenim na datume
Code:
$Today = date("Y-m-d");
.... ORDER BY (date<$Today) ;


I nije mi izbacio ispravan redosled!
Re: Order By veći od ... 04.06.2008. u 00:52 · pre 224 meseca #4
odakle vam ideja da uslov moze da ide u order?

uslov ti ide u WHERE, znaci ovako:

Code:

SELECT brojevi
FROM neka_tabela
WHERE brojevi > 5
ORDER BY brojevi


ovo je pocetnicko pitanje, a odgovor je jos gori, prouci neki tutorijal za SQL pre nego sto postavis pitanje
Re: Order By veći od ... 04.06.2008. u 01:36 · pre 224 meseca #5
A ti bi mogao pre nego odgovoriš da pročitaš šta sam napisao.

Code:
WHERE brojevi > 5
mi nikada neće izbaciti brojeve manje od 5 zar ne?

Ovde pričamo o redosledu prikazivanju, a ne o uslovu.
Re: Order By veći od ... 04.06.2008. u 02:27 · pre 224 meseca #6
Pozd.

Logichki gledano, a mislim i najjednostavnije, bilo bi:

Code:

...
ORDER BY IF(broj >= 5,0,1),broj


Umesto 5 moguce je naravno staviti bilo koji broj. Ne mogu reci da bash volim ovakva reshenja, no, reshenje je tu.

Svako dobro.
Re: Order By veći od ... 04.06.2008. u 10:34 · pre 224 meseca #7
Ok, sada je meni to jasno i funkcionišu oba predloga, ali nijedan ne funkcioniše kada su datumi u pitanju. Znači, neće da napravi redosled ako je 2008-06-07 >= 2008-06-04

???

Hvala
Re: Order By veći od ... 04.06.2008. u 11:38 · pre 224 meseca #9
Nadam se da nisi zaboravio apostrofe, jer je 2008-06-07 >= 2008-06-04 ustvari poredjenje dva integera 1995 >= 1998 što daje 0.
Potpis
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Re: Order By veći od ... 04.06.2008. u 11:41 · pre 224 meseca #10
pretovrio sam u timestamp i to je to! Slučaj rešen.

Hvala broju 1 i svima ostalima! :)
Re: Order By veći od ... 04.06.2008. u 21:37 · pre 224 meseca #11
Pozd.

Moram ti napomenuti da varijanta

ORDER BY IF(broj >= 5,0,1),broj

treba da radi najnormalnije i sa datumom

ORDER BY IF(datum >= '2008-06-04',0,1),datum

Prvo reshenje (sa modulus po 10) nije praktichno, jer prvo, manje je optimizovano za izvrshavanje, a drugo, kada su u pitanju brojevi dozvoljava samo brojeve <= 10 (za brojeve vece od 10 ce pokvariti ORDER kakav zhelish da postignesh), dok sa datumima jednostavno nema smisla.

Svako dobro.
Re: Order By veći od ... 17.06.2008. u 07:50 · pre 223 meseca #12
zanimljivo resenje sa IF

mada, terbalo bi videti sta je optimalnije:

mozda neki union brze odradi posao

(select * from brojevi where broj>=5 order by broj) union (select * from brojevi where broj<5 order by broj)
Potpis
Reci nešto pametno i svi će te pamtiti
- Nepoznati autor
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme