01. marts 2004 - 12:30Der er
11 kommentarer og 1 løsning
Har problemer med en sql-sætning (UNION)
Hej jeg skal lave et slags skema over hvornår der rides på en rideskole, her gælder det at et medlem modtager undervisning, nogle medlemmer skal have hjælpere som jeg kalder traekker, disse trækkere er medlemmer der er blevet oplært som traekker (dvs. at medlem er medlem, men kan også være traekker) Mit problem er at jeg skal have vist følgende Tid, medlemsnr, medlemsnavn, hestnavn, traekkerid, traekkernavn, udstyr. Men det er ikke altid der er en trækker med udstyr tilknyttet, så jeg er nået frem til at jeg skal bruge UNION og at jeg skal bruge 2 select-sætninger, hvor jeg skal sætte nogle af felterne til Null.
Her er foreløbig hvad jeg er kommet frem til:
SELECT K.Tid, U.Medlemsnr, M.Navn, H.Navn, NULL As Traekkerid, NULL As Type FROM Kalender AS K, Medlem AS M, Undervisning AS U, Hest AS H, Arbejde AS A WHERE K.Lektionsnr = U.Lektionsnr AND M.Medlemsnr = U.Medlemsnr AND H.Hesteid = U.Hesteid; UNION SELECT K.Tid, U.Medlemsnr, M.Navn, H.Navn, A.Traekkerid, UD.Type FROM Kalender AS K, Arbejde AS A, Traekker AS T, Medlem AS M, Udstyr AS U WHERE K.Lektionsnr = A.Lektionsnr AND A.Traekkerid = T.Traekkerid AND T.Medlemsnr = M.Medlemsnr;
Kommer med følgende fejl: Indtast parameterværdi H.Navn & UD.Type NB. jeg har ikke fået traekkernavn tilføjet, som skal komme fra medlemstabellen
Without looking at this in detail then I noticed that you have a ; AFTER the frist SELECT so try removing thsi. Also, make sure that fields (columns) from both selects have the same type.
If you dont get an answer then if its possible for you to send me your dB then I can maybe see the problem NOSPAMeksperten@santhell.dkNOSPAM, when I get home from work.
First you should make sure that each individual SQL returns what you want and then make the union query (without ; between) Use teh query builder for this, and inseated of using (WHERE K.Lektionsnr = U.Lektionsnr) use INNER JOIN's
1) Du har et ; lige før UNION, det skal slettes. 2) I anden SELECT referer du til tabellen Udstyr med U, men bruger UD.Type. 3) I anden SELECT referer du til H.navn, uden at have taget tabellen Hest med.
peanut2000>I suggest you look at praaccess' answer! You need to make sure that all tables which you SELECT values from are included in the FROM and WHERE.
I dont know enough about your table design to decide which tables are needed in the query to give you waht ayou want. I have attempted to make a query but I get NO records in the result, so obvioulsy the realtionships I am using are wrong!
proaccess> Det hjalp lidt, men ikke helt, Jeg har nu følgende:
SELECT K.Tid, U.Medlemsnr, M.Navn, H.Navn, NULL As Traekkerid, NULL As Type FROM Kalender AS K, Medlem AS M, Undervisning AS U, Hest AS H, Arbejde AS A WHERE K.Lektionsnr = U.Lektionsnr AND M.Medlemsnr = U.Medlemsnr AND H.Hesteid = U.Hesteid UNION SELECT K.Tid, U.Medlemsnr, M.Navn, H.Navn, A.Traekkerid, UD.Type FROM Kalender AS K, Arbejde AS A, Traekker AS T, Medlem AS M, Udstyr AS UD, Undervisning As U, Hest As H WHERE K.Lektionsnr = A.Lektionsnr AND A.Traekkerid = T.Traekkerid AND U.Medlemsnr = M.Medlemsnr AND U.Hesteid = H.Hesteid AND M.Medlemsnr = UD.Medlemsnr;
Giver følgende fejl: Skriver samme to rækker 2 gange (nedenfor er vist hvordan (rækkerne viser altså samme data, men under trækkerid vises en firkant i stedet for et tal?)) Tid, medlemsnr, medlemsnavn, hestenavn Tid, medlemsnr, medlemsnavn, hestenavn, traekkerid, type(udstyr)
>Thomas: Det var jeg sgu' ikke klar over... ;0( Jeg er altid gået frem efter at det var Access-standard kun at have ; i slutningen af sætningen. (Og samtidig at det var SQL-standard ikke at have det overhovedet)
Det gør dog absolut ingen forskel om ; er med eller ej! (Access sætter det dog selv ind sidst i den SAMLEDE sætning)
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.