[ Qler01 @ 24.06.2014. 22:53 ] @
Treba mi pomoc oko dizajna baze i select upita i pod upita

Potrebno je kreirati bazu podataka za prodavnicu mobilnih telefona. Baza treba da sadrži
proizvođače mobičnih telefona, prodavce mobilnih telefona (ime radnje, adresa, telefon), i modele mobilnih
telefona (ime modela, opis, cena i količina na lageru). Za ovakvu bazu podataka:

Nacrtati dizajn baze podataka sa definisanim imenima tabela i strukturom podataka po
kolonama.


Prikaz prodavnice koja ima najjeftini model telefona CC11


Ja sam napravio tabele Proizvodjac (ProizvodjacID, NazivProizvodjaca) Prodavnica (ProdavnicaID,ImeRadnje,Adresa) Model (ModelID,Opis,ProizvodjacID,ImeModela)
ProdavnicaModel(ProdavnicaModelID,Lager,Cena,ProdavnicaID,ModelID)

Ne znam kako da napravim ovaj gore upit da mi vrati prodavnicu sa najjeftinijim modelom telefona CC11

Hitno je !
[ Qler01 @ 25.06.2014. 10:02 ] @
Dobio sam rezultat

SELECT ImeRadnje
FROM Prodavnica
WHERE ProdavnicaID =( select ProdavnicaID from ProizvodjacModel where Cena=10 )


ali ja zelim da ne gadjam minimalnu cenu tako sto vidim koja je minimalna cena vec zelim da na osnovu funkcije MIN to meni sam dinamicki obradi SQL upit.
Da li ima koga da mi pomogne?
[ Dusan Kondic @ 25.06.2014. 10:19 ] @
Code:

SELECT p.ImeRadnje FROM Prodavnica p INNER JOIN ProizvodjacModel pm ON p.ProdavnicaID = pm.ProdavnicaID
WHERE pm.Cena = (SELECT MIN(pm1.Cena) FROM ProizvodjacModel pm1)
[ HladankaoLed @ 25.06.2014. 10:27 ] @
S obzirom da nema koda za kreiranje tabela i test podataka, evo napamet koda koji bi trebalo da radi sa prilozenim db dizajnom.

Code:

SELECT ImeRadnje
FROM Prodavnica
WHERE ProdavnicaID = (
    SELECT TOP 1 ProdavnicaID 
    FROM ProdavnicaModel pm
    INNER JOIN Model m ON pm.ModelID = m.ModelID
    WHERE m.ImeModela = 'CC11'
    ORDER BY Cena ASC) 


HTH.
[ Qler01 @ 25.06.2014. 10:40 ] @
Da li moze da se to uradi bez INNER JOIN ? Nisam zeleo da koristim INNER JOIN?

Dakle samo UPIT I PODUPIT
[ Dusan Kondic @ 25.06.2014. 10:41 ] @
Da, i ja sam kucao napamet pa sam izostavio ime modela u WHERE klauzuli. Pitanje je trebalo malo bolje obrazložiti.
Neću prekucavati jer rešenje koje je ponudio HladanKaoLed treba da je u redu.
[ Qler01 @ 25.06.2014. 10:43 ] @
Izvukao bi ja to kroz INNER JOIN spojio bi se na tabele i izvukao sta mi treba.
Ali ja zelim bez inner join samo upit i pod upit sa MIN(cena) da dobijem minimalnu cenu koju dinamicki SQL izvuce i prokaze u kojoj radnji je minimalna cena mobilnog telefona.
Moj gornji upit vraca radnju gde je minimalna cena mobilnog telefona, ali samo kada ja vidim u tabeli fizicki gde je minimalna cena i gadjam tu cenu,meni treba dinamicki ako je moguce
[ HladankaoLed @ 25.06.2014. 10:46 ] @
Moram da priznam da ne razumem insistiranje na izbegavanju JOIN-a, ali ovo bi trebalo da bude ekvivalentno gore postovanom resenju:

Code:
SELECT ImeRadnje
FROM Prodavnica
WHERE ProdavnicaID = (SELECT TOP 1 ProdavnicaID FROM ProdavnicaModel WHERE ModelID = (SELECT ModelID FROM Model WHERE ImeModela = 'CC11') ORDER BY Cena ASC) 


[ Qler01 @ 25.06.2014. 10:50 ] @
Drugi problem

Baza pozoriste
Potrebno je kreirati bazu podataka za pozorište. Baza treba da sadrži spisak svih predstava u pozorištu(ime predstave, glumce, opis, zanr) i repertoar(raspored predstava po danina)

Imam tabele Glumci (GlimaciID,Ime,Prezime)
PredstavaDatum (PredstavaDatumID,PredstavaID,Datum)
PredstavaGlumac (PredstavaGlumacID,PredstavaID,GlumacID)
Predstave (PredstaveID,ImePredstave,Opis,ZanrID)
Zanr (ZanrID,OpisZanra)

Ispisi ime predstave gde igra Pera Peric

Moj upit meni vraca uporno sve prdstave koje postoje iako igra u samo jednoj predstavi dakle samo podupiti bez JOIN-A

SELECT ImePredstave
FROM Predstave
WHERE PredstaveID = (SELECT TOP 1 PredstaveID FROM PredstavaGlumac
WHERE GlumacID = (SELECT GlumacID FROM Glumci WHERE Ime='Pera' and Prezime='Peric')



[Ovu poruku je menjao Qler01 dana 25.06.2014. u 14:25 GMT+1]
[ Qler01 @ 25.06.2014. 13:25 ] @
Drugi problem

Baza pozoriste
Potrebno je kreirati bazu podataka za pozorište. Baza treba da sadrži spisak svih predstava u pozorištu(ime predstave, glumce, opis, zanr) i repertoar(raspored predstava po danina)

Imam tabele Glumci (GlimaciID,Ime,Prezime)
PredstavaDatum (PredstavaDatumID,PredstavaID,Datum)
PredstavaGlumac (PredstavaGlumacID,PredstavaID,GlumaciID)
Predstave (PredstaveID,ImePredstave,Opis,ZanrID)
Zanr (ZanrID,OpisZanra)


Ispisi ime predstave gde igra Pera Peric

Moj upit meni vraca uporno sve prdstave koje postoje iako igra u samo jednoj predstavi dakle samo podupiti bez JOIN-A


SELECT ImePredstave
FROM Predstave
WHERE PredstaveID = (SELECT TOP 1 PredstaveID FROM PredstavaGlumac
WHERE GlumacID = (SELECT GlumaciID FROM Glumci WHERE Ime='Pera' and Prezime='Peric')


Nadam se da ste tu Hitno je
[ Qler01 @ 25.06.2014. 14:02 ] @
Kada dodam u WHERE klauzuli za Glumci Opis='drama' dobijem jedan rekord gde igra pera peric u toj predstavi sa opisom Drama.

>>>> WHERE GlumacID = (SELECT GlumaciID FROM Glumci WHERE Ime='Pera' AND Opis='Drama') <<<<<<<<<

Ali me buni zasto vraca sve rekorde predstava kada u WHERE klauzuli kazem Ime='pera' AND Prezime='Peric'

Ja zelim da dobijem rekord gde igra Pera Peric u Predstavi?
[ Qler01 @ 25.06.2014. 16:25 ] @
Reseno problem i ID slovna greska
[ Qler01 @ 01.07.2014. 15:26 ] @
Kako ja sada da dobijem

Prikaz svih modela telefona koje proizvodi Nokia



Ubio sam se pokusavajuci
evo struktura tabela

Proizvodjac(ProizvodjacID,Naziv)
Prodavnica(ProdavnicaID,Ime_Radnje,Adresa,Telefon)
Model(ModelID,Naziv,Opis,ProizvodjacID)
ProdavnicaModel(ProdavnicaModelID,Cena,Lager,ProdavnicaID,ModelID)

Select ImeModela
From Model
Where ProizvodjacID=1

Vraca mi sve modele ali nemam polje za nazivProizvodjaca u rezultatu ? Meni treba Imemodela i naziv Proizvodjaca sa listom

Pomocu JOIN sam resio ali me zanima sa strucnije strane da li moze pomocu podupita da sre to resi ako moze da mi se posalje pod upit da bi video sta je u pitanju

Select Proizvodjac.NazivProizvodjaca,Model.ImeModela
from Proizvodjac INNER JOIN Model ON Proizvodjac.ProizvodjacID=Model.ProizvodjacID
where NazivProizvodjaca='Nokia'




[Ovu poruku je menjao Qler01 dana 01.07.2014. u 16:41 GMT+1]

[Ovu poruku je menjao Qler01 dana 01.07.2014. u 16:55 GMT+1]

[Ovu poruku je menjao Qler01 dana 01.07.2014. u 16:57 GMT+1]

[Ovu poruku je menjao Qler01 dana 01.07.2014. u 17:07 GMT+1]

[Ovu poruku je menjao Qler01 dana 01.07.2014. u 17:28 GMT+1]