13. marts 2006 - 18:43Der er
20 kommentarer og 1 løsning
Problemer med INSERT og UNION
Hej..
Jeg har lidt problemer med at få en SQL-sætning til at virke. I tabellen har jeg kolonnen "Beskrivelse", som kan indeholde en masse forskellige beskrivelser. Jeg vil have alle poster med beskrivelsen "Chumphon Scholarship Program" og "Linguas School i Rio", som hver har en pris (kolonne: "Beløb") på henholdsvis kr.50 og kr.75 (Disse priser er ikke noget der direkte involvere mit spg.).
Jeg har lavet følgende SQL forespørgsel i Access97, som virker fint: SELECT Reservationer.Reservationsnummer, Udgifter.Antal, Udgifter.Beskrivelse, Udgifter.Beløb, Format([Reservationer].[Reservationsdato], 'dd-mm-yyyy') As Reservationsdato, Format([Reservationer].[Afrejsedato], 'dd-mm-yyyy') AS Afrejsedato, Udgifter.Deltagernummer FROM (Reservationer LEFT JOIN Deltagerliste ON Reservationer.Reservationsnummer = Deltagerliste.Reservationsnummer) LEFT JOIN Udgifter ON Deltagerliste.Deltagernummer = Udgifter.Deltagernummer WHERE (((Reservationer.Annulleret) Is Null)) AND (((Udgifter.Beskrivelse) = "Chumphon Scholarship Program")) UNION SELECT Reservationer.Reservationsnummer, Udgifter.Antal, Udgifter.Beskrivelse, Udgifter.Beløb, Format([Reservationer].[Reservationsdato], 'dd-mm-yyyy') As Reservationsdato, Format([Reservationer].[Afrejsedato], 'dd-mm-yyyy') AS Afrejsedato, Udgifter.Deltagernummer FROM (Reservationer LEFT JOIN Deltagerliste ON Reservationer.Reservationsnummer = Deltagerliste.Reservationsnummer) LEFT JOIN Udgifter ON Deltagerliste.Deltagernummer = Udgifter.Deltagernummer WHERE (((Udgifter.Beskrivelse) = "Linguas School i Rio")) GROUP BY Reservationer.Reservationsnummer, Udgifter.Antal, Udgifter.Beskrivelse, Udgifter.Beløb, Reservationer.Reservationsdato, Reservationer.Afrejsedato, Udgifter.Deltagernummer ORDER BY Reservationer.Reservationsnummer;
Det er disse kolonner, som jeg er interesseret i at lægge over en i midlertidig tabel som jeg så kan lave en rapport ud fra: Reservationsnummer, Antal, Beskrivelse, Beløb, Reservationsdato, Afrejsedato, Deltagernummer.
Her er så min kode, som jeg ikke kan få til at virke: Dim SQL As String
SQL = "INSERT INTO TempHelpprogramTable " SQL = SQL & "SELECT Reservationer.Reservationsnummer, Udgifter.Antal, Udgifter.Beskrivelse, Udgifter.Beløb, Format([Reservationer].[Reservationsdato], 'dd-mm-yyyy') As Reservationsdato, Format([Reservationer].[Afrejsedato], 'dd-mm-yyyy') AS Afrejsedato, Udgifter.Deltagernummer " SQL = SQL & "FROM (Reservationer LEFT JOIN Deltagerliste ON Reservationer.Reservationsnummer = Deltagerliste.Reservationsnummer) LEFT JOIN Udgifter ON Deltagerliste.Deltagernummer = Udgifter.Deltagernummer " SQL = SQL & "WHERE (((Reservationer.Annulleret) Is Null)) AND (((Udgifter.Beskrivelse) = 'Chumphon Scholarship Program')) " SQL = SQL & "UNION " SQL = SQL & "SELECT Reservationer.Reservationsnummer, Udgifter.Antal, Udgifter.Beskrivelse, Udgifter.Beløb, Format([Reservationer].[Reservationsdato], 'dd-mm-yyyy') As Reservationsdato, Format([Reservationer].[Afrejsedato], 'dd-mm-yyyy') AS Afrejsedato, Udgifter.Deltagernummer " SQL = SQL & "FROM (Reservationer LEFT JOIN Deltagerliste ON Reservationer.Reservationsnummer = Deltagerliste.Reservationsnummer) LEFT JOIN Udgifter ON Deltagerliste.Deltagernummer = Udgifter.Deltagernummer " SQL = SQL & "WHERE (((Udgifter.Beskrivelse) = 'Linguas School i Rio')) " SQL = SQL & "GROUP BY Reservationer.Reservationsnummer, Udgifter.Antal, Udgifter.Beskrivelse, Udgifter.Beløb, Reservationer.Reservationsdato, Reservationer.Afrejsedato, Udgifter.Deltagernummer " SQL = SQL & "ORDER BY Reservationer.Reservationsnummer"
Jeg har prøvet med forskellige eksempler her fra eksperten, men har ikke kunnet finde noget der virker. Og jeg har rodet lidt frem og tilbage med Queries i Access (SQL,Design View), men uden held. Så jeg vil meget gerne have inputs. Hvad er det jeg gør forkert/mangler?
Det virker voldsomt med en UNION (er der noget, jeg har overset?) Kan du ikke bruge en OR: SQL = "INSERT INTO TempHelpprogramTable " SQL = SQL & " SELECT Reservationer.Reservationsnummer, Udgifter.Antal, Udgifter.Beskrivelse, Udgifter.Beløb, Format([Reservationer].[Reservationsdato], 'dd-mm-yyyy') As Reservationsdato, Format([Reservationer].[Afrejsedato], 'dd-mm-yyyy') AS Afrejsedato, Udgifter.Deltagernummer " SQL = SQL & " FROM (Reservationer LEFT JOIN Deltagerliste ON Reservationer.Reservationsnummer = Deltagerliste.Reservationsnummer) LEFT JOIN Udgifter ON Deltagerliste.Deltagernummer = Udgifter.Deltagernummer " SQL = SQL & " WHERE (Reservationer.Annulleret Is Null AND Udgifter.Beskrivelse = 'Chumphon Scholarship Program') OR (Udgifter.Beskrivelse = 'Linguas School i Rio') " SQL = SQL & " GROUP BY Reservationer.Reservationsnummer, Udgifter.Antal, Udgifter.Beskrivelse, Udgifter.Beløb, Reservationer.Reservationsdato, Reservationer.Afrejsedato, Udgifter.Deltagernummer" SQL = SQL & " ORDER BY Reservationer.Reservationsnummer"
Det virker desværre ikke med OR - så får jeg enten 'Linguas School i Rio' eller 'Chumphon Scholarship Program'. Jeg vil have begge beskrivelser i samme kolonne...
Øøøh. Du skriver "så får jeg enten 'Linguas School i Rio' eller 'Chumphon Scholarship Program'". Nej. Du får da begge. Ex: Tag alle kugler, der er røde ELLER blå. Det giver da alle røde og blå kugler!
"Jeg vil have begge beskrivelser i samme kolonne..." Det burde du da også få.
My Bad, fdata... Ja, det virker fint i en Query med OR.. Men jeg havde nogle problemer med det i forbindelse med en anden forespørgsel, som skulle bruges sammen med det i mit spørgsmål. Du har selvfølgelig ret...
Spice of life. Without cold days we wouldn't appriciate the warm ones. But you're right. We need som rain. The car looks horrible with all that salt on it ;o)
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.