02. marts 2004 - 13:18Der er
14 kommentarer og 1 løsning
SQL-sætning med 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 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;
Kommer med følgende fejl: Den skriver samme sætning 2 gange ud fra samme medlem (med og uden trækker, udstyr), hvor trækkerid vises som en lille firkant - er der nogen der kender denne fejl??? Jeg har følgende tabeller:
Håber at der er nogen der kan hjælpe, mig, så jeg får vist mine medlemmer rigtigt. Hvis der ikke er nogen trækker kan der evt. stå Tid, medlemsnr, medlemsnavn, hestenavn 10.00 10 Per Queen Hvis der er trækker tilknyttet medlem Tid, medlemsnr, medlemsnavn, hestenavn, traekkerid, udstyr 10.00 10 Per Queen 2 saddel
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 AND ((A.traekkerid) Is Null) 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 AND ((A.traekkerid) Is Not Null);
Jeg har tilføjet: AND ((A.traekkerid) Is Null) og AND ((A.traekkerid) Is Not Null)
Hekla> Nu viser den godt nok kun det samme medlem en gang med trækker, hvor den før viste 2 (med og uden trækker), men nu viser den ikke de andre medlemmer uden trækker?
Jeg er sikker på at terry eller en af de andre kan lave det, jeg har desværre selv dårligt tid, men jeg synes lige at du skal notere dig at joins er noget du skal lære.
Hvis du åbner en accessfil, og laver en ny forespørgsel i designvisning, så er du på rette vej.
Din datastruktur ser meget rigtig ud, og Access vil selv danne de joins den mener er rigtige, repræsenteres med linier mellem tabellerne. Du kan slette rette og oprette nye efter behov.
God arbejdslyst.
PS: Jeg er 99,9% sikker på at løsningen med UNION ikke vil være det rigtige, man kan ikke lige overskue om det evt. vil kunne lade sig gøre.
Jeg har selv løst mit problem Her er løsningen: SELECT Distinct K.Tid, U.Medlemsnr, P.Navn, UD.Type, H.Navn, NULL As Traekkerid FROM Kalender AS K, Undervisning AS U, Medlem AS M, Person AS P, Udstyr AS UD, Hest AS H, Arbejde AS A WHERE K.Lektionsnr = U.Lektionsnr AND U.Medlemsnr = M.Medlemsnr AND M.Personid = P.Personid AND U.Udstyrsid = UD.Udstyrsid AND U.Hesteid = H.Hesteid AND K.Lektionsnr NOT IN( select Arbejde.Lektionsnr FROM Kalender, Arbejde WHERE Kalender.Lektionsnr = Arbejde.Lektionsnr)
UNION SELECT K.Tid, U.Medlemsnr, P.Navn, UD.Type, H.Navn, A.Traekkerid FROM Kalender AS K, Undervisning AS U, Medlem AS M, Person AS P, Udstyr AS UD, Hest AS H, Arbejde AS A WHERE U.Medlemsnr=M.Medlemsnr AND K.Lektionsnr=U.Lektionsnr AND K.Lektionsnr=A.Lektionsnr AND M.Personid=P.Personid AND U.Udstyrsid=UD.Udstyrsid AND U.Hesteid=H.Hesteid;
Men ellers tak 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.