Imam neke probleme sa upitima-neki mi stalno bacaju error,a neki rade (ne znam jesu li dobri). Može li mi netko to pregledati i reći što treba promijeniti?
1. Potrebno je kreirati tablicu „racun“ koja izgleda kao u nastavku:
racun:
sifRacun INT
brRacun INT
datRacun DATE
iznosRacun DECIMAL(10,2)
sifKlijent INT
Tablica „racun“ ima primarni ključ na atributu „sifRacun“ s tim da ga baza podataka mora
sama slijedno dodjeljivati. Nad atributom „brRacun“ je potrebno kreirati indeks koji koristi
BTREE i dozvoljava duplikate, a nad atributom „sifKlijent“ potrebno je kreirati strani ključ koji
je vezan na „klijent.sifKlijent“ atribut na bazi podataka.
CREATE TABLE racun(
sifRacun INT NOT NULL AUTO_INCREMENT,
brRacun INT,
datRacun DATE,
iznosRacun DECIMAL(10,2),
sifKlijent INT,
PRIMARY KEY sifRacun,
FOREIGN KEY (brRacun) USING BTREE,
FOREIGN KEY (sifKlijent) REFERENCES klijent.sifKlijent
);
2. Ispisati ostvarene sate rada po nalozima i datume kada su ti nalozi zaprimljeni za sve naloge
čiji je ostvareniSatRada veći od svih predviđenih satiKvara iz tablice kvar.
SELECT nalog.OstvareniSatiRada,nalog.datPrimitkaNalog FROM nalog,kvar WHERE nalog.OstvareniSatiRada > kvar.satiKvar;
3. Ispisati sva mjesta u kojima niti jedan klijent nije registrirao vozilo. Zadatak je potrebno
riješiti pomoću podupita.
SELECT * FROM mjesto WHERE NOT EXISTS (SELECT * FROM klijent WHERE mjesto.pbrMjesto=klijent.pbrReg);
4. Ispisati sva mjesta u kojima ne živi niti jedan radnik. Zadatak je potrebno riješiti pomoću
podupita.
SELECT * FROM mjesto WHERE NOT EXISTS (SELECT * FROM radnik WHERE mjesto.pbrMjesto=radnik.pbrStan);
5. Potrebno je obrisati sve radnike koji žive u županiji „Grad Zagreb“ i u prezimenu sadrže slovo
„a“.
DELETE * FROM radnik WHERE pbrStan IN (SELECT pbrMjesto FROM mjesto JOIN zupanija ON zupanija.sifZupanija=mjesto.sifZupanija WHERE zupanija.nazivZupanija="Grad Zagreb") AND radnik.prezimeRadnik LIKE "%a%";
6. Potrebno je povećati iznos koefPlaca za 10% svim radnicima koji su radili na nalozima
prioriteta većeg od 3.
UPDATE radnik SET KoefPlaca=(KoefPlaca+(KoefPlaca/10)) WHERE sifRadnik=(SELECT sifRadnik FROM nalog WHERE nalog.prioritetNalog >3);
7. Koristeći podupite potrebno je ispisati sve klijente u čijim mjestima stanovanja ne živi ni
jedan radnik.
SELECT * FROM klijent WHERE NOT EXISTS (SELECT * FROM radnik WHERE radnik.pbrStan=klijent.pbrKlijent);
8. Potrebno je ispisati sve radnike s nadprosječnom plaćom.
SELECT * FROM radnik WHERE (KoefPlaca*IznosOsnovice) >(SELECT AVG(KoefPlaca*IznosOsnovice) FROM radnik);