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

pomoc oko podupita

[es] :: Baze podataka :: pomoc oko podupita

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nuklearni Vojvoda
-

Član broj: 2046
Poruke: 211
*.dynamic.sbb.rs.



+6 Profil

icon pomoc oko podupita15.05.2008. u 22:40 - pre 135 meseci
Radim supruzi neki zadatak iz sql-a za faks pa sam zapeo na jednom mestu. Imam 5 tabela ali navescu samo tri da ne bi komplikovao.
PISAC (JMBG,IME,PREZIME)
AUTOR(JMBG,KID)
KNJIGA (KID,ZANR,NASLOV)
E sad postoji pisac 'Pera Peric' koji je napisao ukupno dve knjige, jedna je zanr 'poezija' a druga 'roman'
Drugi pisac je 'Marko Markovic' koji je napisao ukupno dve knjige, obe su zanr 'poezija'.
Meni treba upit koji mi vraca samo Marka Markovica posto je deo zadatka da prikazem samo pisca koji pise SAMO poeziju, znaci ako je pisao jos neki zanr on mi ne treba.
ovo je deo podupita ali nisam dalje uspeo da nastavim:
Code:
select ime from pisac,autor,knjiga where pisac.jmbg=autor.jmbg and autor.kid=knjiga.kid and knjiga.zanr='poezije';

Ne mora ceo odgovor, samo neki hint da nastavim. Hvala unapred.
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Moderator
Član broj: 53780
Poruke: 575
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: pomoc oko podupita15.05.2008. u 23:37 - pre 135 meseci
Tvoj upit vraća skup pisaca koji pišu poeziju. (prvi skup)

Napravi upit koji vraća skup pisaca koji pišu žanrove različite od poezije. (drugi skup)

Konačan odgovor je prvi skup bez drugog skupa.


"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

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.adsl-1.sezampro.yu.



Profil

icon Re: pomoc oko podupita16.05.2008. u 16:16 - pre 135 meseci
Odokativno:
Code:

select t1.jmbg,
       t1.ime,
       t1.prezime
from   (select distinct p.jmbg,
                        p.ime,
                        p.prezime
        from  ((autor as a
                 inner join pisac as p
                   on a.jmbg = p.jmbg)
                inner join knjiga as k
                  on a.id_knjiga = k.id_knjiga)
        WHERE  k.zanr = 'POEZIJA') as t1,
       (select distinct a.jmbg
        from autor as a
               inner join knjiga as k
                 on a.id_knjiga = k.id_knjiga
        where  k.zanr <> 'POEZIJA') as t2
where  t1.jmbg <> t2.jmbg


Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Nuklearni Vojvoda
-

Član broj: 2046
Poruke: 211
*.dynamic.sbb.rs.



+6 Profil

icon Re: pomoc oko podupita16.05.2008. u 17:36 - pre 135 meseci
Milose nisam uspeo ono da implementiram posto mi ne ide bas dobro sql (jos), ali zasto mi ovo ne radi?

Code:

select ime from pisac as p1,autor as a1,knjiga as k1
where p1.jmbg=a1.jmbg and a1.kid=k1.kid and k1.zanr='poezije' and not exists 

(select ime from pisac as p2,autor as a2,knjiga as k2
where p2.jmbg=a2.jmbg and a2.kid=k2.kid and k2.zanr<>k1.zanr);



A sto se tice skupova nisam nasao minus kod mysql-a ne postoji pa sad idem da pokusavam sa left join posto ovo ne moze:

select ime from pisac,autor,knjiga where pisac.jmbg=autor.jmbg and autor.kid=knjiga.kid and knjiga.zanr='poezije' (minus)
select ime from pisac,autor,knjiga where pisac.jmbg=autor.jmbg and autor.kid=knjiga.kid and knjiga.zanr<>'poezije'

Hvala na trudu!
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.adsl-1.sezampro.yu.



Profil

icon Re: pomoc oko podupita16.05.2008. u 17:52 - pre 135 meseci
Aha, MySQL je u pitanju, probaj ovo:
Code:

select distinct p.jmbg,
                p.ime,
                p.prezime
from  ((autor as a
            inner join pisac as p
              on a.jmbg = p.jmbg)
            inner join knjiga as k
              on a.id_knjiga = k.id_knjiga)
where
  k.zanr = 'POEZIJA'
and p.jmbg not in 
      (select distinct a.jmbg
       from autor as a
        inner join knjiga as k
         on a.id_knjiga = k.id_knjiga
       where  k.zanr <> 'POEZIJA') 

Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Nuklearni Vojvoda
-

Član broj: 2046
Poruke: 211
*.dynamic.sbb.rs.



+6 Profil

icon Re: pomoc oko podupita16.05.2008. u 19:05 - pre 135 meseci
Sad radi ko zmaj idem da ga proucavam :-)
Fala!

al evo sad probah i ovo radi :
Code:

select ime from pisac ,autor,knjiga where pisac.jmbg=autor.jmbg and autor.kid=knjiga.kid and knjiga.zanr='poezije'
and
pisac.jmbg not in (select jmbg from autor inner join knjiga on autor.kid = knjiga.kid where knjiga.zanr <> 'poezije');


A gledam da bude sto prostiji kod prvo sto se ja ne razumem dovoljno a drugo treba ovo objasniti dalje osobi kojoj ovo jos slabije ide...

[Ovu poruku je menjao Vladimir Starcevic dana 16.05.2008. u 22:01 GMT+1]
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.adsl-1.sezampro.yu.



Profil

icon Re: pomoc oko podupita16.05.2008. u 21:57 - pre 135 meseci
Svaki problem, može se rešiti na više načina. Naravno, treba uvek tražiti najjednostavniji a da je ujedno i najkvalitetniji. Taj način razmišljanja stiče se vremenom i iskustvom. Primer sam predstavio, na brzinu u hodu, možda se pojavi neki post sa još jasnijim rešenjem.

Pozdrav.
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Moderator
Član broj: 53780
Poruke: 575
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: pomoc oko podupita16.05.2008. u 22:28 - pre 135 meseci
Vladimire, ako hoćeš da ti upiti budu što jasniji onda se trudi da postigneš uniformnost u njihovom pisanju.

U glavnom upitu si tabele spajao u okviru WHERE klauzule, dok si u podupitu tabele spajao upotrebom JOIN-a. Ovo nikako ne doprinosi jednostavnosti. Odluči se za način na koji hoćeš da spajaš tabele i drži ga se. Neka to bude tvoja konvenicija sa samim sobom o načinu na koji se spajaju tabele. Naravno, to neisključuje potrebu da znaš i onaj drugi način spajanja.

Ja ti preporučujem da upotrebljavaš JOIN klauzulu za spajanje tabela jer se time jasno odvajaju uslovi po kojima se tabele spajaju od uslova po kojima se tabele filtriraju. Takođe ovaj način je moderniji i sve više se upotrebljava.


"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

Nuklearni Vojvoda
-

Član broj: 2046
Poruke: 211
*.dynamic.sbb.rs.



+6 Profil

icon Re: pomoc oko podupita17.05.2008. u 11:55 - pre 135 meseci
Ok hvala vam ja sam pocetnik pa mi ovakvi komentari znace trudicu se da ih zapamtim.
 
Odgovor na temu

[es] :: Baze podataka :: pomoc oko podupita

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

Postavi temu Odgovori

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