Avatar billede puppetmaster Nybegynder
10. oktober 2005 - 10:00 Der 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"));
Avatar billede terry Ekspert
10. oktober 2005 - 10:23 #1
why cant you have soem code run the queries for you?

DoCmd.OpenQuery "qry1", , acReadOnly
DoCmd.OpenQuery "qry2", , acReadOnly
Avatar billede puppetmaster Nybegynder
10. oktober 2005 - 10:24 #2
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? ;) )
Avatar billede terry Ekspert
10. oktober 2005 - 10:30 #3
Not quite sure I understand your problem.

I can see that the two queries are very similar, but thats it.

Do you need an insert query which does the same as both queries, and then you also need an update query to update query if the records alreday exists?
Avatar billede puppetmaster Nybegynder
10. oktober 2005 - 10:38 #4
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....
Avatar billede terry Ekspert
10. oktober 2005 - 10:53 #5
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] ?
Avatar billede puppetmaster Nybegynder
10. oktober 2005 - 11:10 #6
I could take a screenshot and mail it to you.
Avatar billede terry Ekspert
10. oktober 2005 - 11:26 #7
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?
Avatar billede puppetmaster Nybegynder
10. oktober 2005 - 11:31 #8
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"));
Avatar billede terry Ekspert
10. oktober 2005 - 11:42 #9
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.
Avatar billede puppetmaster Nybegynder
10. oktober 2005 - 13:36 #10
Yeah...sigh, that IS the right way to do it, 2 querysubs joined together usings an update query...
Thanks, terry.
Please give a "svar"...
Avatar billede terry Ekspert
10. oktober 2005 - 13:45 #11
svar

What was the solution?
Avatar billede puppetmaster Nybegynder
10. oktober 2005 - 13:47 #12
yes, atleast now I get the expected results
please, drop an answer...
Avatar billede terry Ekspert
10. oktober 2005 - 13:49 #13
.
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