SQL zadatak bez korištenja podupita

Pozdrav svima,
nadam se da ćete mi moći pomoći. Naime dobio sam zadatak za narpaviti jednostavne sql querije ali bez podupita. Imam velikog iskustva sa querijima u kojima smijem koristiti podupit ali ovo ne znam ni kako bi počeo.
Znači ovako:

  1. Za sve parfeme čije je reklamiranje počelo i završilo iste godine ispisati ime, zaradu i rashod parfema. Rashod parfema je prihod svih osoba koji su radili u reklamaciji parfema(marketing, itd…). Ispisati samo nazive parfeme na čjoj reklamaciji je radilo više od 100 osoba.

  2. Za svaku osobu ispisati id osobe, ime i prezime te broj parfema za koje je zaradila više od 5 milijuna kuna. Rezultate poredati prema broju parfema, a unutar toga abecedno po prezimenu.

  3. Za svaki parfem od čije se zarade skupilo više od 100 milijuna kuna, ispisati naziv parfema i ime osobe (ili više njih) koji je zaradio najviše novaca na tom parfemu.

Ako možete pomoći, bio bi Vam jako zahvalan na pomoći i eventualno ako ste iz Osijeka počastim vas sa cugom.
Tablice: http://prntscr.com/8anwxe

Kako mislis vidjeti ovih 100 osoba iz ovoga je to nemoguce vidjet :D…

Nije tesko to rijesiti samo kada bi bili dostupni svi parametri sto se trazi u zadatku

da to je i meni bilo čudno, ali takav je zadatak nažalost…
Da li možeš probati riješiti bez tog uvijeta? Tj da se proba riješiti sve ovo bez tih čudnih uvijeta, jer i u drugom zadatku isto postoji takav čudan uvijet…
Treba samo skontati kako se to može napraviti bez poduviejta pošto to nisam niakda radio a ne nalazim baš primjere na netu…

Hvala

1.u ovom zadatku bi sam promjeni id_parfema i id_osobe kod reklamirali u parfem_id i osobe_id

select p.naziv_parfema, p.zarada, sum(r.prihod_osobe) from parfem as p inner join reklamirali as r on p.id_parfema = r.parfem_id inner join osoba as o on o.id_osoba = r.osoba_id where datediff(year,p.pocetak_reklamiranja, p.kraj_reklamiranja)=0

u ovom zadatku bi sam promjenio id_parfem i id_osobe kod reklamirali u parfem_id i osobe_id i stavio sam umjesto 5 milijuna da je kao 5 kn ili neceg
select o.id_osobe, o,ime, o.prezime, count(p.naziv_parfema) from osoba as o inner join reklamirali as r on o.id_osobe = r.osobe_id inner join parfem as p on p.id_parfema =r.parfem_id where p.zarada > 5 order by count(p.naziv_parfema) desc, o.prezime asc

u ovom zadatku bi sam promjenio id_parfema i id_osobe kod reklamirali u parfem_id i osobe_id
select p.naziv_parfema, o.ime from parfem as p inner join reklamirali as r on p.id_parfema = r.parfem_id inner join osoba as o on o.id_osobe = r.osobe_id where p.zarada > 100

Za sve parfeme čije je reklamiranje počelo i završilo iste godine ispisati ime, zaradu i rashod parfema. Rashod parfema je prihod svih osoba koji su radili u reklamaciji parfema(marketing, itd…). Ispisati samo nazive parfeme na čjoj reklamaciji je radilo više od 100 osoba.

SELECT
    parfem.naziv_parfema, parfem.zarada, SUM(reklamirali.prihod_osobe) AS rashod, COUNT(osoba.id_osoba) AS broj_osoba
FROM
    parfem
LEFT JOIN
    reklamirali ON reklamirali.id_parfema = parfem.id_parfema
LEFT JOIN
    osoba ON osoba.id_osobe = reklamirali.id_osobe
WHERE
    parfem.pocetak_reklamiranja >= ''2010-01-01" AND parfem.pocetak_reklamiranja <= "2010-12-31"
GROUP BY
    parfem.id_parfema
HAVING
    broj_osoba > 100

Evo rješenja za 1. pitanje, nisam siguran jel valja, nisam testirao… jedino je prob za godinu, što treba promjeniti malo upit da gleda istu godinu, a ne fiksnu 2010 u ovom slučaju… Kasnije ako stignem, probam rješiti i drugo i treće pitanje :wink:

Hvala na pomoći, jako korisno došla.
Samo me zanima da mi objasnite što je točno podupit onda.
Svugdje gdje sam našao nekakva objašnjenja za podupit govore da čim se koristi WHERE da to spada u podupit, te isti ne smijem onda koristiti

Podupit ili subquery ti znaci kada select imas u selectu ja inace kada radim sa podupitima koristim in listu tipa

Select * from narudzba where korisnik_id in(select id from users where ime=‘pero’)

Najlaksi oblik podupita

A tako znači, onda literatura koju sam gledao je krivo objasnila.
Puno hvala na pomoći i objašnjenju.

Ako mozes probaj uvjek bez podupita radit a ako nemos onda koristi podupit spajanje je najbolja solucija. Ja sam koristio podupite u bazama koje su bile lose napravljenje di je u tablici samo bio primarni kljuc a foreign keya nije bilo onda mi je jedino rjesenje ostalo podupit ili rekonstruirat bazu.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Profit Monkey