[ goja76 @ 06.05.2010. 08:41 ] @
Imam jednu tabelu (Tabela) u kojoj imam jednu kolonu sa vise atributa (ime,prezime,grad itd.) i u drugoj koloni
ispise (marko,markovic,banjaluka itd).Napravio sam upit sa ispisom samo jednog atributa (marko) ali kako da
upotrebim i ostale atribute iz te kolone.
Izvinjavam se na ovako glupim pitanjima ali sam pocetnik pa se borim , sam ucim)
[ misk0 @ 06.05.2010. 11:16 ] @
Pa nisu to bas atributi ako ja tebe dobro razumijem. Ti imas varchar2 kolonu u kojoj stavljas string od vishe rijeci i onda bi da izdvojis svaku od tih rijeci sto nije dobar metod, osim ako ih ne odvajas nekim posebnim 'delimiter'-om. Sta ce se desiti ako se neko zove Marko Petra Markovic Mrkonjic Grad. Morao bi stavjati zareze ili nesto drugo izmedju.
Ako mozes, prepravi strukturu tabele i napravi 3 kolone -> Ime, Prezime, Grad.
[ goja76 @ 06.05.2010. 11:42 ] @
Ja se nisam mozda najbolje izrazio , a razlog je moja neupucenost.Evo ovako;
imam dve kolone u jednoj tabeli:

attribute value
--------- -------
ime marko
prezime markovic
grad grad
zanimanje admin

select * from tabela
where attribute = 'ime'

sad mi treba i upit gdje cu obuhvatiti i prezime,grad i zanimanje ali da izvjestaju stoji:

ime prezime grad zanimanje
--- -------- ---- ----------
marko markovic grad admin

u principu ja imam vise podataka ali ja obuhvatim samo ime ili neki drugi
ali ako hocu za vise radnika i vise podataka (prezime,grad itd) ne znam napraviti.

hvala
[ darkosos @ 06.05.2010. 12:35 ] @
Definitivno nije najsrecnije resenje, ali bih pitao jos da li ima nesto sto veze ime, prezime, grad i zanimanje u toj tabeli, da bi znao da se to odnosi na jednog coveka? Ako bi svi imali neki svoj ID, npr:
ID attribute value
-- --------- -------
1 ime marko
1 prezime markovic
1 grad grad
1 zanimanje admin
2 ime darko
2 prezime ....
itd
Onda bi mogao na sledeci, veoma elegantan nacin:
Code:

select ime.value, prezime.value, grad.value, zanimanje.value
  from
    (select id, value from tab where attribute = 'ime') ime,
    (select id, value from tab where attribute = 'prezime') prezime,
    (select id, value from tab where attribute = 'grad') grad,
    (select id, value from tab where attribute = 'zanimanje') zanimanje
where ime.id = x and prezime.id = x and grad.id = x and zanimanje.id = x;


Mada bih preporucio pravljenje funkcija tipa f_ime(id), f_prezime(id) itsl koje bi ti vracale odgovarajucu vrednost za dat ID.

[ goja76 @ 06.05.2010. 12:52 ] @
Da , imam ja jos kolona id,entity i entityid.
[ darkosos @ 06.05.2010. 13:09 ] @
Zvuci kao da je entityid ono sto ti treba, sto objedinjuje entity...
Najbolje da napravis funkcije, npr get_ime(p_id) kao:
select value from tab where entityid = p_id and attribute = 'ime';
i onda sastavi upit ovako:
select get_ime(entityid), get_prezime(entityid), ...
from tab;
[ djoka_l @ 06.05.2010. 13:43 ] @
@goja76
Način na koji si postavio pitanje prosto tera čoveka da ti ne odgovori. Ipak, pošto tek počinješ, pokazaću ti kako da uradiš ono što ti je potrebno.

Code (sql):

CREATE TABLE test_djoka (
id NUMBER,
test_id NUMBER,
attribute varchar2(20),
VALUE varchar2(20));

INSERT INTO test_djoka VALUES (1,1,'ime','petar');
INSERT INTO test_djoka VALUES (2,1,'prezime','petrovic');
INSERT INTO test_djoka VALUES (3,1,'grad','neki');
INSERT INTO test_djoka VALUES (4,1,'zanimanje','admin');

INSERT INTO test_djoka VALUES (5,2,'ime','marko');
INSERT INTO test_djoka VALUES (6,2,'prezime','markovic');
INSERT INTO test_djoka VALUES (7,2,'grad','neki drugi');

SELECT y.test_id, MAX(y.ime) ime, MAX(y.prezime) prezime, MAX(y.grad) grad,
       MAX(y.zanimanje) zanimanje
  FROM (SELECT x.test_id, decode(x.attribute, 'ime', x.VALUE, NULL) ime,
                decode(x.attribute, 'prezime', x.VALUE, NULL) prezime,
                decode(x.attribute, 'grad', x.VALUE, NULL) grad,
                decode(x.attribute, 'zanimanje', x.VALUE, NULL) zanimanje
           FROM (SELECT t.test_id, t.attribute, t.VALUE FROM test_djoka t) x) y
 GROUP BY y.test_id;
 


Ubuduće, kada postavljaš slično pitanje, daj prvo strukturu tabele, nekoliko inserta da pokaže šta imaš u toj tabeli, pa da onda znamo šta ti stvarno treba i da možemo da na našim bazama isprobamo upit koji ti dajemo kao odgovor.
[ goja76 @ 06.05.2010. 13:51 ] @
Ok izvinjavam se i hvala na pomoci.