webForumDet fria alternativet

Dubbel främmande nyckel till samma tabell

Databaser & SQL

3 svar · 211 visningar · startad av MMats

Medlem sedan sep. 200061 inlägg
Frågan#1

Hej !

Jag har 2 stycken tabeller. Den ena tabellen inhåller personalinformation som förnamn, efternamn, telefon mm. Den andra innehåller information om projekt de jobbar i.

tblPersonal (Tabell 1)
==========
fldPersonID (pk)
fldFornamn
fldEfternamn
fldTelefon

tblProjekt (Tabell 2)
==========
fldProjektID (pk)
fldProjektnamn
fldProjektledare (fk till fldPersonID i tabell 1)
fldSakerhetsansvarig (fk till fldPersonID i tabell 1)

Min fråga är följande:
Går det att med en SQL-sats skriva ut informationen i form av:
Projektnamn, Projektledare, Säkerhetsansvarig ?

Jag försökte med något i den här stilen:
SELECT fldProjektnamn, fldFornamn, fldEfternamn
FROM tblProjekt INNER JOIN
tblPersonal ON tblProjekt.fldProjektledare = tblPersonal.fldPersonID
WHERE fldProjektID=1
Och det funkar men frågan är hur jag ska kunna få fram fldFornamn och fldEfternamn igen på samma SQL-sats

Nån som har svaret?

/MMats

Medlem sedan dec. 200012 464 inlägg
#2
SELECT fldProjektnamn, led.fldFornamn as leaderFornamn, led.fldEfternamn  as leaderEfternamn, sec.fldFornamn as securityFornam, sec.fldEfternamn as securityEfternamn
FROM tblpersonal as led inner join tblprojekt on led.fldpersonid = tblprojekt.fldprojektledare inner join tblpersonal as sec on tblprojekt.fldSakerhetsansvarig  = sec.fldpersonid 
WHERE fldProjektID=1

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 200061 inlägg
#3

Tack så mycket för hjälpen det funkade kanon!
Det enda jag fick göra var att lägga till 2 parenteser enligt:

SELECT fldProjektnamn, led.fldFornamn as leaderFornamn, led.fldEfternamn as leaderEfternamn, sec.fldFornamn as securityFornam, sec.fldEfternamn as securityEfternamn
FROM ((tblpersonal as led inner join tblprojekt on led.fldpersonid = tblprojekt.fldprojektledare) inner join tblpersonal as sec on tblprojekt.fldSakerhetsansvarig = sec.fldpersonid) 
WHERE fldProjektID=1

Ska man behöva göra det? Jag kör Access.

Medlem sedan dec. 200012 464 inlägg
#4

Det skall man inte behöva, men Access är lite kinkigt i detta avseende

------------------
essentitia preter non sans multiplicandum

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)