Avatar billede repsak Nybegynder
16. oktober 2004 - 17:11 Der er 5 kommentarer og
1 løsning

To værdier i samme felt

jeg har følgende

Pseudo:
table elev(
    id, navn;
)

table forældre(
    id, navn;
)

table forældre_elev(
    id, forældreid, elevid;
)

table underskrift(
    itemid, forældreid;
)
----
jeg ønsker at få returneret tre værdier:

  elevnavn, 1._forældre_som_har_underskrevet_et_givent_itemid, 2._forældre_som_har_underskrevet_et_givent_itemid
   
Det er ikke altid at '2._forældre_som_har_underskrevet_et_givent_itemid' indeholder en værdi. Hvordan skriver jeg det som SQL? Her er mit udgangspunkt:

SELECT DISTINCT elev.navn, (???)
FROM elev
INNER JOIN forældre_elev ON forældre_elev.elevid = elev.id
INNER JOIN underskrift ON underskrift.forældreid = forældre_elev.forældreid
WHERE itemid = 2;

Giver det mening? :-)
Avatar billede arne_v Ekspert
16. oktober 2004 - 17:17 #1
Det bliver en forfærdelig query.

De 2 teknikker du skal bruge er:

- forældre og forældre_elev tabellen skal begge to med 2 gange

- den optionelle skal bruge LEFT JOIN fremfor INNER JOIN
Avatar billede repsak Nybegynder
16. oktober 2004 - 17:22 #2
hmm hvis det bliver forfærdeligt, så er det måske bedre at få resultatet som 2 rows?

elevnavn, 1._forældre_som_har_underskrevet_et_givent_itemid
og
elevnavn, 2._forældre_som_har_underskrevet_et_givent_itemid

og så bearbejde resultatet på klienten?
Avatar billede arne_v Ekspert
16. oktober 2004 - 17:23 #3
Noget a la dette:

SELECT elev.navn,f1.navn,f2.navn
FROM ((((elev INNER JOIN forældre_elev fe1 ON fe1.elevid = elev.id)
INNER JOIN forældre f1 ON f1.id=fe1.forældreid)
INNER JOIN underskrift ON fe1.id=underskrift.forældreid)
LEFT JOIN forældre_elev fe2 ON ON fe2.elevid = elev.id AND fe2.forældreid = underskrift.forældreid AND fe1.forældreid<>fe2.forældreid)
LEFT JOIN forældre f2 ON f2.id=fe2.forældreid)
Avatar billede arne_v Ekspert
16. oktober 2004 - 17:24 #4
Jeg ville helt klart lave en SELECT som hentede alle forældre som havde
underskrevet et item som rækker og så lade applikationen vise dem
passende.

Meget nemmere !
Avatar billede repsak Nybegynder
16. oktober 2004 - 17:31 #5
ja du har nok ret... det der query bliver jo ikke til at håndtere.
Avatar billede arne_v Ekspert
17. oktober 2004 - 17:15 #6
Og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester