/ 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
SQL forespørgsel i forbindelse med special~
Fra : Trine Banke Brennech~


Dato : 24-08-02 14:21

Hej

Jeg mangler en SQL-forespørgsel, der involverer 4 tabeller og er lidt for
kompleks til mine egne evner i øjeblikket...

Jeg har en tabel PERSON (_ID_, FORNAVN, EFTERNAVN, POSTNR), som er
specialiseret til
LÆRER (_ID_, SYSTEM_KODE) og
STUDERENDE (_ID_, KLASSE).

En person SKAL være enten lærer eller studerede eller begge dele. ID hos
lærer og studerende er fremmednøgler, der referer til ID hos person.

Derudover har jeg POSTDISTRIKT(_POSTNR_, POSTBY). Hertil referer persons
fremmednøgle postnr.

Nu til problemet:
Jeg vil gerne på en hjemmeside have vist en tabel over samtlige personer,
hvor der vises (sorteret efter efternavn)
ID, efternavn, fornavn, postnr, postby, system_kode (hvis det er en lærer),
klasse (hvis det er en studerende).

Kan dette gøre med een kompleks SELECT-sætning?

Min database er interbase/firebird.

Håber der er en, der kan hjælpe.

Med venlig hilsen
Trine



 
 
Claus Rasmussen (24-08-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 24-08-02 15:13

Trine Banke Brenneche wrote:

> Jeg vil gerne på en hjemmeside have vist en tabel over samtlige personer,
> hvor der vises (sorteret efter efternavn)
> ID, efternavn, fornavn, postnr, postby, system_kode (hvis det er en
> lærer), klasse (hvis det er en studerende).

Du skal bruge det, der hedder outher-join (left-join), men det afhænger
lidt af databasen, hvordan det skal gøres (og hvad det hedder):

I Oracle-lignende databaser:

select PERSON.ID,
...
LÆRER.SYSTEM_KODE,
STUDERENDE.KLASSE
from PERSON,
LÆRER,
STUDERENDE
where PERSON.ID = LÆRER.ID (+) <- Dette er en outher-join dims
and PERSON.ID = STUDERENDE.ID (+)
;

I SQL92 level et-eller-andet databaser:

select PERSON_ID
...
LÆRER.SYSTEM_KODE,
STUDERENDE.KLASSE
from PERSON
left join LÆRER on (PERSON.ID = LÆRER.ID)
left join STUDERENDE on (PERSON.ID = STUDERENDE.ID
;

MVH
-Claus


Trine Banke Brennech~ (25-08-2002)
Kommentar
Fra : Trine Banke Brennech~


Dato : 25-08-02 12:39

Tusind tak for svaret; det var lige, hvad jeg skulle bruge.
Havde ikke fattet at man kunne have mere end een left join ad gangen...
Med venlig hilsen
Trine


"Claus Rasmussen" <clr@cc-consult.dk> skrev i en meddelelse
news:ak849a$nb0$1@sunsite.dk...
> Trine Banke Brenneche wrote:
>
> > Jeg vil gerne på en hjemmeside have vist en tabel over samtlige
personer,
> > hvor der vises (sorteret efter efternavn)
> > ID, efternavn, fornavn, postnr, postby, system_kode (hvis det er en
> > lærer), klasse (hvis det er en studerende).
>
> Du skal bruge det, der hedder outher-join (left-join), men det afhænger
> lidt af databasen, hvordan det skal gøres (og hvad det hedder):
>
> I Oracle-lignende databaser:
>
> select PERSON.ID,
> ...
> LÆRER.SYSTEM_KODE,
> STUDERENDE.KLASSE
> from PERSON,
> LÆRER,
> STUDERENDE
> where PERSON.ID = LÆRER.ID (+) <- Dette er en outher-join
dims
> and PERSON.ID = STUDERENDE.ID (+)
> ;
>
> I SQL92 level et-eller-andet databaser:
>
> select PERSON_ID
> ...
> LÆRER.SYSTEM_KODE,
> STUDERENDE.KLASSE
> from PERSON
> left join LÆRER on (PERSON.ID = LÆRER.ID)
> left join STUDERENDE on (PERSON.ID = STUDERENDE.ID
> ;
>
> MVH
> -Claus
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste