PDA

View Full Version : kako složiti sql upit


tjodalv
07-06-2007, 12:29
Trebam ispisati zaposlenike prema 2 uvjeta, no imam problem. Naime svaki zaposlenik može imati više lokacija i više sektora u kojem radi, pa tako imam tablice:

tbl_location_linker

userID - ovdje je ID zaposlenika
locID - ovdje je ID lokacije


tbl_sector_linker

userID - ovdje je ID zaposlenika
secID - ovdje je ID sektora

tbl_users
ID -id usera
ime - ime usera

Ja sad trebam ispisati usere koji žive na određenoj lokaciji i rade u određenom sektoru, te parametre prosljeđujem preko querystringa u sql upit. Problem je što ne znam kako da sastavim SQL upit.

Kod ispisa usera, useri se ne smiju ponavljati. Unaprijed zahvaljujem na bilo kakvoj pomoći.

P.S. Radi se o MS Access bazi.

Hvala

kezo
07-06-2007, 12:56
SELECT tbl_users.ID
FROM tbl_users
WHERE tbl_users.ID IN (SELECT tbl_location_linker.userID FROM tbl_location_linker WHERE locID = @locID) AND
tbl_users.ID IN (SELECT tbl_sector_linker.userID FROM tbl_sector_linker WHERE secID = @secID)

ili

SELECT tbl_users.ID
FROM tbl_users
INNER JOIN tbl_location_linker
ON tbl_location_linker.userID = tbl_users.ID
INNER JOIN tbl_sector_linker
ON tbl_sector_linker.userID = tbl_users.ID
WHERE tbl_sector_linker.secID = @secID AND tbl_location_linker.locID = @locID


@secID i @locID zamjeniš varijablama.

pisao sam direktno u post pa nije otporno na greške

tsereg
07-06-2007, 12:58
PARAMETERS
p_secID AS INTEGER
, p_locID AS INTEGER
;
SELECT
tbl_users.ID AS ID
, tbl_users.ime AS ime
FROM
(
tbl_users
INNER JOIN
tbl_sector_linker
ON
tbl_users.ID = tbl_sector_linker.userID
)
INNER JOIN
tbl_location_linker
ON
tbl_users.ID = tbl_location_linker.userID
WHERE
tbl_sector_linker.secID = p_secID
AND tbl_location_linker.locID = p_locID
ORDER BY
tbl_users.ID
;Ne mogu se ponavljati ukoliko je baza iole normalizirana. Ako se ponavljaju imaš dupliciranih zapisa.

tjodalv
07-06-2007, 16:07
Hvala ... To je to uspio sam uz vašu pomoć s time da sam morao koristiti DISTINCT da mi ne izlistava duple poslove ...

Hvala puno !

tsereg
07-06-2007, 22:24
Imaš problem ako ti izlistava duple zapise. To znači da imaš više *potpuno identičnih* zapisa. Nešto ti u tom programu ne radi kako treba. Kakva je korist imati DVA puta isti zapis, tj. da je "Marko" na lokaciji Špansko u sektoru "Održavanje"?

tjodalv
08-06-2007, 00:45
Takvih zapisa nema. Ima npr. da je Marko na lokaciji špansko, zapruđe, sopot i radi u sektoru održavanja i sektoru opremanja.