Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Komplikovano sortiranje ???!!!

[es] :: MySQL :: Komplikovano sortiranje ???!!!

[ Pregleda: 2941 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vortex77

Član broj: 91694
Poruke: 124
*.dynamic.sbb.co.yu.



+1 Profil

icon Komplikovano sortiranje ???!!!30.10.2007. u 09:05 - pre 200 meseci
Problem:

Imam tabelu "Uslovi" prema kojoj radim filtriranje podataka druge tabele. Potrebno mi je da u prvoj tabeli uradim sortiranje podataka tako da slog sa najvise nula bude poslednji (a slog bez nula bude prvi). Evo kako izgledaju podaci :

Tabela "Uslovi" pre sortiranja :


uslov1 _ | _ uslov2 _ | _ uslov3 _ | _ uslov4 _ | _ uslov5 _ | _ uslov6 _
_222_______145________ 0_________100________0__________0____
_10________111________200________24222_____123________0_____
_100_______0__________111________0_________2000_______1000__
_111_______145________2000_______2_________1000_______20000_
_0_________0__________0__________0_________1__________0_____


Tabela "Uslovi" nakon sortiranja :


uslov1 _ | _ uslov2 _ | _ uslov3 _ | _ uslov4 _ | _ uslov5 _ | _ uslov6 _
_111_______145________2000_______2_________1000_______20000_
_10________111________200________24222_____123________0_____
_100_______0__________111________0_________2000_______1000__
_222_______145________ 0_________100________0_________0_____
_0_________0__________0__________0_________1__________0_____

Ono sto sam probao (a sto nikako ne mogu da namestim) jeste 'order by' sortiranje, ali ocigledno mi nesto nedostaje, jer dobijeni rezultat nije ni priblizno onome sto treba da se dobije.

 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Komplikovano sortiranje ???!!!30.10.2007. u 09:27 - pre 200 meseci
Tabele ti nisu normalizovane. Nema smisla da imaš polja "uslov1" - "uslov6".

Inače, za sortiranje bi mogao da koristiš SUM(ABS(SIGN(x))).

Naravno, pod uslovom da ti je baza normalizovana.
 
Odgovor na temu

vortex77

Član broj: 91694
Poruke: 124
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Komplikovano sortiranje ???!!!30.10.2007. u 09:38 - pre 200 meseci
Ne, ne.....

Nazivi polja su dati cisto deskriptivno. Konkretna polja imaju svoja imena, tipove, a tebele jesu normalizovane. Dati podaci su cisto radi lakseg objasnjenja problema :))

Da li bih mogao da te zamolim da napises kompletan izraz....
Hvala
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1571 Profil

icon Re: Komplikovano sortiranje ???!!!30.10.2007. u 09:52 - pre 200 meseci
Iz tvog pitanja cini se da ti brojevi nisu u poljim anumerik tipa vec su karakter tipa, kao i da svaka cifra u broju ima neko znacenje (to jest da nije isto '0' i '000'. To vodi zakljucku da ti nesto nije bas dobro reseno u bazi.

Inace iz primera koji si dao, cini se da bi se obicnim sortiranjem karakter polaj to lako postiglo da nisi proglasio nulu desetkom. Racunar tako ne radi. Takav sort moras da radis rucno.

 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Komplikovano sortiranje ???!!!30.10.2007. u 09:56 - pre 200 meseci
Peđa, ne kapiraš, ne sortira po broju nula, već po broju polja čija je vrednost nula. Doduše, nejasno se izrazio.

@vortex77
Nisi me ubedio da ti je baza normalizovana.

Code:

SELECT * FROM tabela
ORDER BY ABS(SIGN(uslov1)) + ABS(SIGN(uslov2)) + ABS(SIGN(uslov3)) + ABS(SIGN(uslov4)) DESC


Kažem, da ti je baza normalizovana, mogao bi da koristiš SUM()
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.simex-su.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Komplikovano sortiranje ???!!!30.10.2007. u 09:57 - pre 200 meseci
Metapodaci?
Citat:
vortex77: Sto se tice zapisa, propust se nece ponoviti.

Opet nisi dao normalne metapodatke, a hoćeš da ti se napiše ceo SQL upit!
"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
 
Odgovor na temu

vortex77

Član broj: 91694
Poruke: 124
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Komplikovano sortiranje ???!!!30.10.2007. u 10:21 - pre 200 meseci
Hmmm......

Izgleda da se nisam dobro izrazio, pa zarad boljeg objasnjenja dacu tacan izgled tabele.


Code:

+---------+---------------------------------+------+-----+-------------------------+-------+
| Field   | Type                            | Null | Key | Default                 | Extra |
+---------+---------------------------------+------+-----+-------------------------+-------+
| sifvp   | smallint(3) unsigned zerofill   | NO   | MUL | 000                     |       |
| ppozbr  | decimal(23,0) unsigned zerofill | NO   |     | 00000000000000000000000 |       |
| kpozbr  | decimal(23,0) unsigned zerofill | NO   |     | 00000000000000000000000 |       |
| bikzr1  | smallint(3) unsigned zerofill   | NO   |     | 000                     |       |
| bikzr2  | bigint(13) unsigned zerofill    | NO   |     | 0000000000000           |       |
| bikzr3  | smallint(2) unsigned zerofill   | NO   |     | 00                      |       |
| konsif  | varchar(8)                      | NO   | MUL | 00000000                |       |
+---------+---------------------------------+------+-----+-------------------------+-------+

+-------+-------------------------+-------------------------+--------+---------------+--------+----------+
| sifvp | ppozbr                  | kpozbr                  | bikzr1 | bikzr2        | bikzr3 | konsif   |
+-------+-------------------------+-------------------------+--------+---------------+--------+----------+
|   221 | 00000000000000000012345 | 00000000000000000020000 |    245 | 0023002101024 |     04 | 10100001 |
|   221 | 00000000000000000002001 | 00000000000000000002200 |    245 | 0023002101024 |     04 | 10100001 |
|   221 | 00000000000000000000000 | 00000000000000000000000 |    310 | 0000000010039 |     69 | 10100001 |
|   000 | 00000000000000000000000 | 00000000000000000000000 |    000 | 0000000000000 |     00 | 10100001 |
|   221 | 00000000000000000000000 | 00000000000000000000000 |    245 | 0023002101024 |     04 | 10100001 |
|   221 | 00000000000000000000000 | 00000000000000000000000 |    000 | 0000000000000 |     00 | 20202    |
|   222 | 00000000000000000000001 | 00000000000000000001000 |    000 | 0000000000000 |     00 | 10100001 |
|   223 | 00000000000000000000001 | 00000000000000000000200 |    310 | 0000000010039 |     69 | 20202    |
|   221 | 00000000000000000000010 | 00000000000000000000200 |    000 | 0000000000000 |     00 | 0        |
+-------+-------------------------+-------------------------+--------+---------------+--------+----------+


Polja su setovana sa vodecim nulama.

Ovo je spisak "bitnih" polja koja su mi potrebna za kreiranje upita (sortiranja). U tabeli postoje i kljucna polja koja nisam naveo.

Nadam se da ce ovo bar malo razjasniti problem...
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Komplikovano sortiranje ???!!!30.10.2007. u 10:29 - pre 200 meseci
Još bolje, možeš komotno da izbaciš ABS iz upita koji sam ti dao jer su ti polja unsigned.
 
Odgovor na temu

vortex77

Član broj: 91694
Poruke: 124
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Komplikovano sortiranje ???!!!30.10.2007. u 10:58 - pre 200 meseci
Fenomenalno!

Sve radi.... Moram priznati da nisam znao da order by moze raditi na ovaj nacin :))

Hvala!!!!
 
Odgovor na temu

[es] :: MySQL :: Komplikovano sortiranje ???!!!

[ Pregleda: 2941 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.