Gledajuci dijagram, ne vidim da si nesto lose logicki uradio, deluje OK.
Jedan predlog imam, ako nije kasno. Budi kosistentan u imenovanju atributa. Na primer, u nekoliko tabela imas atribut 'Broj'. kTo je verovatno neki broj 'rekorda' (autonumber?). Sta tu ne valja?
U tabeli Grupa, imas polje 'Broj' i to ti je PK. U redu, ako samo ovu tabelu posmatras.
U tabeli sekcija, ima spolje 'Broj' koje nije ni u kakvoj vezi sa Grupa.Broj. Imas zatim vezu Sekcija.Grupa_ID = Grupa.Broj
Zar nije bilo lakse da u tabeli Grupa, odmah kazes 'Grupa_ID'? Ovako, Grupa_ID je Grupa_ID svuda osim u maticnoj tabeli.
Isto i za atribut koji zoves ID u maticnim tabelama - Region.ID = druge_tabele.Region_ID, Rasa.Id = druge_tabele.Rasa_ID
Toplo preporucujem da se atributi koji se migriraju u druge tabele zovu isto u SVIM tabelama.
I koristi JOIN operator umesto WHERE. WHERE sluzi da se postavi uslov, a ne da se povezu dve tabele (mada moze). Za povezivanje tabela sluzi JOIN. Razlog? Ako bas nista drugo, onda jasnoca pisanja i razumevanje 'koda'
Ako ne radis u Accessu, malo formatiranja ne bi skodilo, na primer ovako:
Code:
SELECT
x.grupa_id
, x.sekcija_id
, x.podsekcija_id
, d.naziv
, g.naziv_lok
, x.vrsta
, x.cacib
, x.radni_zadatak_id
FROM GRUPA AS a
JOIN SEKCIJA AS b
ON a.broj=b.grupa_id
JOIN PODSEKCIJA AS c
ON b.grupa_id=c.grupa_id
And b.broj=c.sekcija_id
JOIN REGION AS d
ON d.id=e.region_id
JOIN POREKLO AS e
ON (c.grupa_id=e.grupa_id)
And (c.sekcija_id=e.sekcija_id)
And (c.broj=e.podsekcija_id)
JOIN PASMINA AS x
ON (e.grupa_id=x.grupa_id)
And (e.sekcija_id=x.sekcija_id)
And (e.podsekcija_id=x.podsekcija_id)
And (e.region_id=x.region_id)
JOIN RADNI AS f
ON f.id=x.radni_zadatak_id
JOIN RASA AS g
And (g.id=x.rasa_id);
WHERE (d.naziv='Germany') // <--- OVDE STAGOD JOS KONKRETNO ZA PRETRAGU