10. oktober 2005 - 10:00Der er
12 kommentarer og 1 løsning
Merge 2 forespørgsler
Jeg har 2 næsten identiske tilføjelsesforespørgsler, som jeg enten skal ændre til 1 tilføjelsesforespørgsel og 1 opdaterings-ditto, eller finde en måde at klare det hele i ét hug.
Forespørgsel 1: INSERT INTO Gennemsnitslon ( Dato, Medarbejdernr_, [SumOfEnheder m Gene], [SumOfBeløb m Gene] ) SELECT tempLonpost.Dato, tempLonpost.Medarbejdernr_, qrySumAfEnheder.AntalEnheder, Sum(tempLonpost.Beløb) AS SumOfBeløb FROM qrySumAfEnheder INNER JOIN tempLonpost ON (qrySumAfEnheder.Dato = tempLonpost.Dato) AND (qrySumAfEnheder.Medarbejdernr_ = tempLonpost.Medarbejdernr_) GROUP BY tempLonpost.Dato, tempLonpost.Medarbejdernr_, qrySumAfEnheder.AntalEnheder, tempLonpost.[Gennemsnit med genetillæg] HAVING (((tempLonpost.Dato)=[forms]![Lønpost]![cldKalender]) AND ((tempLonpost.[Gennemsnit med genetillæg])="indgår"));
Forespørgsel 2: INSERT INTO Gennemsnitslon ( Dato, Medarbejdernr_, [SumOfEnheder u Gene], [SumOfBeløb u Gene] ) SELECT tempLonpost.Dato, tempLonpost.Medarbejdernr_, qrySumAfEnheder.AntalEnheder, Sum(tempLonpost.Beløb) AS SumOfBeløb FROM qrySumAfEnheder INNER JOIN tempLonpost ON (qrySumAfEnheder.Dato = tempLonpost.Dato) AND (qrySumAfEnheder.Medarbejdernr_ = tempLonpost.Medarbejdernr_) GROUP BY tempLonpost.Dato, tempLonpost.Medarbejdernr_, qrySumAfEnheder.AntalEnheder, tempLonpost.[Gennemsnit uden genetillæg] HAVING (((tempLonpost.Dato)=[forms]![Lønpost]![cldKalender]) AND ((tempLonpost.[Gennemsnit uden genetillæg])="indgår"));
They are both tilføjelsesforespørgsler, so I have to change one of them to an Update (and ...well, it's monday morning, so the "upstairs department" aren't "in" yet, if you know what I'm saying? ;) )
Either 1 query that can do what both the above queries do, or 1 query that adds records and another that updates the records.
The reason I gotta have both update and add-queries is, that the primary key is comprised of Dato and Medarbejdernr_. If I run the above queries, I will get an error message on the second query, cause the dato/medarbejdernr_ already exists. If I can tell you anything else to make things clearer, please ask....
I think I undersatnd what your afte, but its not easy to make any suggestions without a knowledge of your data.
I would think that it is possible to make one SELECT query which selects all the fields needed to make just one INSERT. Have you tried making a SELECT which can select both [SumOfEnheder m Gene], [SumOfBeløb m Gene] and [SumOfEnheder u Gene], [SumOfBeløb u Gene] ?
I can imagine that the screenshots would only give me an idea of your tables/relationships. I would then need to make an example to work on, and that would take some time.
Have you tried making a query to select all 6 fields?
Yes, just tried it, but the value of "SumOfBeløb u Gene" and "SumOfBeløb m Gene" will be identical. I wouldn't mind running 2 queries, but I'm a bit stuck on changing this query to an update query:
INSERT INTO Gennemsnitslon ( Dato, Medarbejdernr_, [SumOfEnheder u Gene], [SumOfBeløb u Gene] ) SELECT tempLonpost.Dato, tempLonpost.Medarbejdernr_, qrySumAfEnheder.AntalEnheder, Sum(tempLonpost.Beløb) AS SumOfBeløb FROM qrySumAfEnheder INNER JOIN tempLonpost ON (qrySumAfEnheder.Dato = tempLonpost.Dato) AND (qrySumAfEnheder.Medarbejdernr_ = tempLonpost.Medarbejdernr_) GROUP BY tempLonpost.Dato, tempLonpost.Medarbejdernr_, qrySumAfEnheder.AntalEnheder, tempLonpost.[Gennemsnit uden genetillæg] HAVING (((tempLonpost.Dato)=[forms]![Lønpost]![cldKalender]) AND ((tempLonpost.[Gennemsnit uden genetillæg])="indgår"));
But if you make sub selects for each of the 4 totals columns then you can get around this (but the value of "SumOfBeløb u Gene" and "SumOfBeløb m Gene" will be identical.)
UPDATE: Make a query containing this. SELECT tempLonpost.Dato, tempLonpost.Medarbejdernr_, qrySumAfEnheder.AntalEnheder, Sum(tempLonpost.Beløb) AS SumOfBeløb FROM qrySumAfEnheder INNER JOIN tempLonpost ON (qrySumAfEnheder.Dato = tempLonpost.Dato) AND (qrySumAfEnheder.Medarbejdernr_ = tempLonpost.Medarbejdernr_) GROUP BY tempLonpost.Dato, tempLonpost.Medarbejdernr_, qrySumAfEnheder.AntalEnheder, tempLonpost.[Gennemsnit uden genetillæg] HAVING (((tempLonpost.Dato)=[forms]![Lønpost]![cldKalender]) AND ((tempLonpost.[Gennemsnit uden genetillæg])="indgår"));
Now make an UPDATE query which selects the data from the query you have just made.
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.