Avatar billede dsjk Novice
10. november 2004 - 15:12 Der er 5 kommentarer og
1 løsning

right join og inner join

Hej

Skal lige sige jeg er ikke skarp i join typer, og har derfor brug for hjælp.

Har som udgangspunkt denne query:
SELECT omdeling.uge, omdeling.aar, omdeling.antal, omdeling.garantistk, omdeling.garantikilo, indlevering.indleveringsted, blad.bladnavn, trykkeri.trykkerinavn, blad.uanbringelig, blad.bladid
FROM trykkeri INNER JOIN (indlevering INNER JOIN (blad INNER JOIN omdeling ON blad.bladid = omdeling.bladid) ON indlevering.indleveringsted = blad.indlevering) ON trykkeri.autoid = blad.trykkerinr;

Har også en tabel med alle ugenr. (1-53), som jeg nu gerne vil have som kolonne overskrifter, så dem som står til omdeling i uge 1 kommer til at stå under uge 1, dem som er i uge 2 står i kolonnen med uge 2 osv.

Tabellen Uge indeholder kun et felt "uge"

Hvordan løser jeg dette?


/dsjk
Avatar billede dsjk Novice
10. november 2004 - 15:47 #1
har lige siddet og kigget lidt mere på det og er nu kommet frem til:

TRANSFORM Sum(omdeling.antal) AS SumOfantal1
SELECT trykkeri.trykkerinavn, blad.bladnavn, blad.bladid, omdeling.garantistk, omdeling.garantikilo, blad.indlevering
FROM uge INNER JOIN (trykkeri INNER JOIN (blad INNER JOIN omdeling ON blad.bladid = omdeling.bladid) ON trykkeri.autoid = blad.trykkerinr) ON uge.uge = omdeling.uge
GROUP BY trykkeri.trykkerinavn, blad.bladnavn, blad.bladid, omdeling.garantistk, omdeling.garantikilo, blad.indlevering
PIVOT uge.uge;

Men den mangler at vise alle uge, dvs. også de uger hvor der ikke er nogen ti lomdeling.
Avatar billede pallero Nybegynder
11. november 2004 - 15:23 #2
Hvis du vil vise alle Uger, uanset om der er en tilknyttet post i Omdelings tabellen skal du bruge en LEFT JOIN
Noget i stil med: FROM uge LEFT JOIN(trykkeri INNER JOIN...o.s.v

Palle
Avatar billede dsjk Novice
11. november 2004 - 15:31 #3
Vhis jeg laver: TRANSFORM Sum(omdeling.antal) AS SumOfantal1
SELECT trykkeri.trykkerinavn, blad.bladnavn, blad.bladid, omdeling.garantistk, omdeling.garantikilo, blad.indlevering, Count(omdeling.uge) AS AntalUdgivelser
FROM uge LEFT JOIN (trykkeri INNER JOIN (blad INNER JOIN omdeling ON blad.bladid=omdeling.bladid) ON trykkeri.autoid=blad.trykkerinr) ON uge.uge=omdeling.uge
GROUP BY trykkeri.trykkerinavn, blad.bladnavn, blad.bladid, omdeling.garantistk, omdeling.garantikilo, blad.indlevering
PIVOT uge.uge;

Får jeg fejl: "Joinudtrykket understøttes ikke"

/dsjk
Avatar billede pallero Nybegynder
11. november 2004 - 16:58 #4
Prøv sådan i stedet for:
FROM Uge LEFT JOIN (Trykkeri RIGHT JOIN (Blad RIGHT JOIN Omdeling ON Blad.BladID = Omdeling.Bladid) ON Trykkeri.AutoID = Blad.TrykkeriNr) ON Uge.Uge = Omdeling.Uge;
Avatar billede dsjk Novice
12. november 2004 - 08:49 #5
det begyndet at ligne noget.

Den tager godt nok alle ugerne med nu, men der kommer en helt blank linie i queryen.
Avatar billede dsjk Novice
12. november 2004 - 09:59 #6
Har løst det - lavede en ny query, som hentede alle felterne fra den første query, og satte et af felterne til "Is Not Null"
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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