29. oktober 2004 - 21:06Der er
8 kommentarer og 1 løsning
JOIN problem m/Access
Jeg har ikke helt forstået hvordan man nester flere tabeller med joins. Nedenstående er jeg kommet frem til nærmest ved en tilfældighed, men den fungere nu som den skal. Imidlertid vil jeg gerne have vist et brugernavn oa fra yderligere en tabel, men kan ikke få det til at fungere. Min sql indtil videre ser således ud:
SELECT tblKommentar.KommentarTekst, tblEmne.EmneTekst FROM tblKommentar
INNER JOIN (tblEmne INNER JOIN tblKategori
ON tblKategori.KategoriID=tblEmne.EmneKategoriNr) ON tblKommentar.KommentarEmneNr=tblEmne.EmneID
WHERE tblEmne.EmneID=[@A];
tblBrugere.BrugerNavn, som jeg bl.a. gerne vil have med, har også et UserID med relation til tblKommentar.KommentarBrugerNr.
Jeg ved ikke om der er oplysninger nok i det her, men sig endelig til hvis i mener i kan hjælpe.
Og sig også gerne til, hvis jeg er helt galt på fremgangsmåden.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Måske sådan her: SELECT kom.Kommentar, em.EmaneTekst, br.BrugerNavn FROM tblKommentar AS kom, tblEmne AS em, tblKategori AS kat, tblBrugere AS br WHERE kat.KategoriID = em.EmneKategoriNr AND kom.KommentarEmneNr = em.EmneID AND br.UserID = kom.KommentarBrugerNr AND em.EmneID=[@A];
Nææh - den funker ikke. Den jeg selv er kommet frem til giver mig alle kommentarer på emnet [@A] samt emneteksten som jo skal være unik. Hvad jeg forsøger at opnå, er faktisk meget a la Exp. hér mht tilgængelige informationer.
SELECT tblKommentar.KommentarTekst, tblEmne.EmneTekst, tblBrugere.BrugerNavn FROM ((tblKommentar INNER JOIN tblEmne ON tblKommentar.KommentarEmneNr = tblEmne.EmneID) INNER JOIN tblKategori ON tblEmne.EmneKategoriNr = tblKategori.KategoriID) INNER JOIN tblBrugere ON tblKommentar.KommentarBrugerNr = tblBrugere.userID WHERE tblEmne.EmneID=[@A];
Hvis du har poster som ikke har et bruger id kan du evt rette sidste INNER JOIN til LEFT JOIN så denne linje: INNER JOIN tblBrugere ON tblKommentar.KommentarBrugerNr = tblBrugere.userID
Bliver: LEFT JOIN tblBrugere ON tblKommentar.KommentarBrugerNr = tblBrugere.userID
Det er helt perfekt eagleeye, du lever op til dit navn må jeg sige :-))
Kan du kort forklare forskellen på de 2 måder (min/din) sql er bygget op på. Måske det kommer med mere erfaring/forståelse men jeg har haft svært ved at finde forklarende beskrivelser af bl.a. joins, bortset fra de mere simple eksempler.
Fint nok, det gir' mig noget at gå videre med. Takker for hjælpen!
Synes godt om
Ny brugerNybegynder
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.