/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Join gennem to tabeller
Fra : Thomas Lindgaard


Dato : 22-11-03 02:18

Hejsa

Jeg har et setup ala følgende:

tabel person {
id int
navn text
}

tabel stilling {
id int
betegnelse text
ekstra bool
}

tabel person_stilling {
person_id int
stilling_id int
}

En person har altid en stilling (hvor ekstra=false) og nogle enkelte har
flere stillinger (hvor alle stillinger pånær een har ekstra=true).

Nu vil jeg gerne kunne finde navn og ikke-ekstra-stilling for personen med
id 42. Så vidt jeg kan se er jeg nødt til at køre to SQL-forespørgsler:

1) SELECT navn
FROM person
WHERE id=42

2) SELECT betegnelse
FROM stilling INNER JOIN person_stilling
WHERE id=stilling_id AND person_id=42 AND ekstra=false

Er der en nemmere måde at finde en persons stilling på? Eller er det min
tabel-struktur der ikke er god nok? (Jeg bruger MySQL så jeg kan hverken
bruge sub-selects eller views...)

Mvh.
/Thomas

 
 
Jimmy (22-11-2003)
Kommentar
Fra : Jimmy


Dato : 22-11-03 09:28


"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in message
news:pan.2003.11.22.01.17.32.308571@it-snedkeren.BLACK_HOLE.dk...
> Hejsa
>
> Jeg har et setup ala følgende:
>
> tabel person {
> id int
> navn text
> }
>
> tabel stilling {
> id int
> betegnelse text
> ekstra bool
> }
>
> tabel person_stilling {
> person_id int
> stilling_id int
> }
>
> En person har altid en stilling (hvor ekstra=false) og nogle enkelte har
> flere stillinger (hvor alle stillinger pånær een har ekstra=true).

Så din "ekstra" denoterer altså om stillingstypen er en
"primær"/"selvstændig" stilling?


> Nu vil jeg gerne kunne finde navn og ikke-ekstra-stilling for personen med
> id 42. Så vidt jeg kan se er jeg nødt til at køre to SQL-forespørgsler:

Det tror jeg bestemt ikke.


SELECT navn, betegnelse
FROM person
LEFT JOIN person_stilling ON (person.ID =
person_stilling.person_id)
LEFT JOIN stilling ON (person_stilling.stilling_ID = stilling.ID)
WHERE person.id=42 AND ekstra = false

Mvh
Jimmy





Thomas Lindgaard (24-11-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 24-11-03 15:01

On Sat, 22 Nov 2003 09:28:28 +0100, Jimmy wrote:

[snip]

>> En person har altid en stilling (hvor ekstra=false) og nogle enkelte har
>> flere stillinger (hvor alle stillinger pånær een har ekstra=true).
>
> Så din "ekstra" denoterer altså om stillingstypen er en
> "primær"/"selvstændig" stilling?

Jeps.

>> Nu vil jeg gerne kunne finde navn og ikke-ekstra-stilling for personen med
>> id 42. Så vidt jeg kan se er jeg nødt til at køre to SQL-forespørgsler:
>
> Det tror jeg bestemt ikke.
>
>
> SELECT navn, betegnelse
> FROM person
> LEFT JOIN person_stilling ON (person.ID =
> person_stilling.person_id)
> LEFT JOIN stilling ON (person_stilling.stilling_ID = stilling.ID)
> WHERE person.id=42 AND ekstra = false

Jamen hvor er det smukt - jeg takker og nejer pænt.

Mvh.
/Thomas - der nok skulle overveje at genoptage læsningen i SQL-bogen

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste