[ prginfo @ 10.11.2009. 00:01 ] @
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
[ franjo_tahi @ 10.11.2009. 08:59 ] @
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


[ prginfo @ 10.11.2009. 09:05 ] @
A gde je ovde veza sa tabelom3, koja je na neki nacin kljucna i iz koje dobijam pocetni podatak TABELA3.IDU ???
[ savkic @ 10.11.2009. 11:14 ] @
> 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  
[ prginfo @ 10.11.2009. 18:11 ] @
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
[ savkic @ 11.11.2009. 02:45 ] @
> 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