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

SQL upit i sortiranje podataka

[es] :: Firebird/Interbase :: SQL upit i sortiranje podataka

[ Pregleda: 4352 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

prginfo
NS

Član broj: 174814
Poruke: 133
*.adsl.neobee.net.



+1 Profil

icon SQL upit i sortiranje podataka10.11.2009. u 00:01 - pre 178 meseci
Koristim IB.

Imam 3 tabele sa sledecom strukturom:

tabela1 [ID,NAZIV]
tabela2 [IDU,IDS1,IDS2,IDS3]
tabela3 [IDU]

Potrebno je da dobijem podatke u sledecoj formi:

tabela1.ID, tabela1.NAZIV gde je tabela1.ID=tabela2.IDS1
tabela1.ID, tabela1.NAZIV gde je tabela1.ID=tabela2.IDS2
tabela1.ID, tabela1.NAZIV gde je tabela1.ID=tabela2.IDS3

i tako u tri reda.

Ovo sve dobijam sa SQL-om (deo and p.idu='100' mi sluzi samo za proveru)

select t.id, t.naziv from tabela1 t
where t.id in (select s.ids1 from tabela2 s, tabela3 p where s.idu=p.idu and p.idu='100')
or t.id in (select s.ids2 from tabela2 s, tabela3 p where s.idu=p.idu and p.idu='100')
or t.id in (select s.ids3 from tabela2 s, tabela3 p where s.idu=p.idu and p.idu='100')

Problem je sto meni trebaju podaci sortirani redom po redosledu polja IDS1, IDS2, IDS3

Ja dobijem validne podatke, ali mi se podaci, te tri kolone sortiraju po ID od manjeg ka vecem.

Kako da sortiram podatke po redosledu IDS1, IDS2, IDS3?

Hvala
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: SQL upit i sortiranje podataka10.11.2009. u 08:59 - pre 178 meseci
Store procedura ili probaj ovako:

Code:

select Tabela1.id, Tabela1.naziv 
   from Tabela1, Tabela2 
WHERE
  Tabela1.ID = Tabela2.IDS1 OR Tabela1.ID = Tabela2.IDS2 OR Tabela1.ID = Tabela2.IDS3
ORDER BY Tabela2.IDS1, Tabela2.IDS2, Tabela2.IDS3


 
Odgovor na temu

prginfo
NS

Član broj: 174814
Poruke: 133
*.ADSL.neobee.net.



+1 Profil

icon Re: SQL upit i sortiranje podataka10.11.2009. u 09:05 - pre 178 meseci
A gde je ovde veza sa tabelom3, koja je na neki nacin kljucna i iz koje dobijam pocetni podatak TABELA3.IDU ???
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: SQL upit i sortiranje podataka10.11.2009. u 11:14 - pre 178 meseci
> select t.id, t.naziv from tabela1 t
> where t.id in (select s.ids1 from tabela2 s, tabela3 p where s.idu=p.idu and p.idu='100')
> or t.id in (select s.ids2 from tabela2 s, tabela3 p where s.idu=p.idu and p.idu='100')
> or t.id in (select s.ids3 from tabela2 s, tabela3 p where s.idu=p.idu and p.idu='100')

> Problem je sto meni trebaju podaci sortirani redom po redosledu polja IDS1, IDS2, IDS3

Nisam siguran kakav redosled ti treba (ako to nije to, daj neki primer), ni da li sam pogodio uslov, ali u svakom slučaju gledaj da upit pišeš sa joinovima, to je uglavnom najefikasniji način izvršavanja.

Code:

SELECT
  T1.ID, T1.NAZIV
FROM
  TABELA1 T1
  INNER JOIN TABELA2 T2 
     ON T1.ID = T2.IDS1 OR T1.ID = T2.IDS2 OR T1.ID = T2.IDS3
  INNER JOIN TABELA3 T3
    ON T3.IDU = T2.IDU
ORDER BY
  T2.IDS1, T2.IDS2, T2.IDS3  

 
Odgovor na temu

prginfo
NS

Član broj: 174814
Poruke: 133
*.adsl.neobee.net.



+1 Profil

icon Re: SQL upit i sortiranje podataka10.11.2009. u 18:11 - pre 178 meseci
Sada sam bliže odgovoru.

Naime, dužan sam da dam dodatno objašnjenje.

Savkićev skript bi mi radio sortiranje izlaznih podataka prvo po T2.IDS1, pa onda po T2.IDS2, a na kraju po T2.IDS3

Ja želim da mi se pokaže prvo rezultat T2.IDS1 pa T2.IDS2 pa T2.IDS3

znači, rezultat u formi:

T1.ID T1.NAZIV gde je T1.ID=T2.IDS1
T1.ID T1.NAZIV gde je T1.ID=T2.IDS2
T1.ID T1.NAZIV gde je T1.ID=T2.IDS3
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: SQL upit i sortiranje podataka11.11.2009. u 02:45 - pre 178 meseci
> Savkićev skript bi mi radio sortiranje izlaznih podataka prvo po T2.IDS1, pa onda po T2.IDS2, a na kraju po T2.IDS3
> Ja želim da mi se pokaže prvo rezultat T2.IDS1 pa T2.IDS2 pa T2.IDS3

Želiš li prvo slogove koji odgovaraju IDS1 vrednostima pa onda IDS2 i na kraju IDS3? Pokušaj sa UNION (prilagodi primer tvojim tabelama).

SELECT ID, NAZIV FROM TABELA T1 WHERE T1.ID = 1
UNION ALL
SELECT ID, NAZIV FROM TABELA T1 WHERE T1.ID = 2
UNION ALL
SELECT ID, NAZIV FROM TABELA T1 WHERE T1.ID = 3
 
Odgovor na temu

[es] :: Firebird/Interbase :: SQL upit i sortiranje podataka

[ Pregleda: 4352 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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