Avatar billede region Nybegynder
24. juli 2001 - 11:00 Der er 19 kommentarer og
1 løsning

Query to complex ???

når jeg vil køre nedenstående SQL given den fejl. Kan jeg forenkle udtrykket evt. via VBA..

SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"2\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"3\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"5\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"7\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"12\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"13\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"14\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"15\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"16\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"17\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"19\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"21\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"22\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"23\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"24\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"25\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"26\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"27\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"28\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"29\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"31\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"32\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"33\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"34\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"35\"
union
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"37\"
UNION SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"38\";
Avatar billede alkrojen Nybegynder
24. juli 2001 - 12:18 #1
Det ser lidt rodet ud....kan du prøve at forklare hvad du vil med queryen??? Hvad er \"TOP 10\", en SQL kommando jeg ikke kender?
Avatar billede terry Ekspert
24. juli 2001 - 12:34 #2
hi region!

I can see what your after and I agree with alkrojn \"det ser lidt redet ud\", but it works, it gives you what you want. You could have ýour Branch nr in a table, this would simplify things if others were necessary. Then in Code you could loop through all of those in the table and insert them into a temp tabel. It would look smarter, and I think you may gain performance, because joins (UNION) are going to slow things down...


Avatar billede terry Ekspert
24. juli 2001 - 12:37 #3
and make sure you have an index on Branch nr!
Avatar billede lens Nybegynder
24. juli 2001 - 12:52 #4
Hvad med bare at lave den som:
SELECT TOP 10 *
FROM [gr all down]
WHERE [branch nr]=\"2\" or [branch nr]=\"3\" osv....... ; ?
Avatar billede region Nybegynder
24. juli 2001 - 12:56 #5
LENS>
Det skal ihvertfald ikke være et OR statement, da jeg jo ønsker både 2 AND 3...
AND duer bare ikke da der jo ikke både står 2 og 3 i samme felt....

TERRY>
kan du forklare dig lidt nærmere...evt med flere point...
Avatar billede terry Ekspert
24. juli 2001 - 12:57 #6
If I am not mistaken region wants the top 10 from each [branch nr], not the top ten of them all!

region> now i can see that you say it DOES NOT WORK. I can only suggest that there are too many joins.
Take a look at my suggestion!
Avatar billede terry Ekspert
24. juli 2001 - 12:58 #7
Ja! back in 5 (or more!)
Avatar billede region Nybegynder
24. juli 2001 - 13:01 #8
nemlig...to many joins....
den kan kun håndtere ca. 4-6 stykker af disse.

Hvis jeg nu opretter TEMP tabellen hvordan ser koden så ud i VBA.

JEg var startet på at lave en appendquery for hver branch til en TEMP tabel, men dette er for klodset idet dette kun er 1 af 5 typer...!!!
Avatar billede terry Ekspert
24. juli 2001 - 13:04 #9
Can you explain \"for klodset idet dette kun er 1 af 5 typer...!!! \"



Avatar billede region Nybegynder
24. juli 2001 - 13:07 #10
denne query tager kun højde for [gr all down]

jeg skal have lavet 4 andre tabeller / queryes der gør det samme for 4 andre målefelter.
Avatar billede region Nybegynder
24. juli 2001 - 13:16 #11
alt det her er affødt af

http://www.eksperten.dk/spm/91446
Avatar billede terry Ekspert
24. juli 2001 - 13:32 #12
Dim db As Database
Dim rs As Recordset
   
    Set db = CurrentDb

\'tblBranch contains all the numbers from your UNION JOIN. tblNewTemp is a copy of [gr all down]
   
    Set rs = db.OpenRecordset(\"tblBranch\")
   
    DoCmd.SetWarnings False
    DoCmd.RunSQL \"Delete * from tblNewTemp\"
   
    Do While Not rs.EOF
   
       
        Debug.Print rs!BranchNr
           
        DoCmd.RunSQL \"INSERT INTO tblNewTemp SELECT [gr all down].* FROM [gr all down] WHERE [gr all down].[branch nr] = \'\" & rs!BranchNr & \"\'\"
       
        rs.MoveNext
       
    Loop
   
    DoCmd.SetWarnings False

    rs.close
    set rs = Nothing
    Set db = Nothing

Avatar billede terry Ekspert
24. juli 2001 - 13:33 #13
you can remove Debug.Print rs!BranchNr
           
       
Avatar billede region Nybegynder
24. juli 2001 - 13:52 #14
ja det virker fint bortset fra at det ikke kun er de 10 største poster der kommer med fra hver branch men det hele....

hvordan gøres dette, og hvad skal du have af point.
Avatar billede terry Ekspert
24. juli 2001 - 13:56 #15
DoCmd.RunSQL \"INSERT INTO tblNewTemp SELECT TOP 10 [gr all down].* FROM [gr all down] WHERE [gr all down].[branch nr] = \'\" & rs!BranchNr & \"\'\"
 

Points, thats up to you region!
       
Avatar billede region Nybegynder
24. juli 2001 - 14:00 #16
hvad synes du selv...
Avatar billede terry Ekspert
24. juli 2001 - 14:02 #17
Well I can see you only have about 300 or so, so it would be unreasonable to take them all. So how about 50, if you think its too much then less, and too few, then more!
Avatar billede region Nybegynder
24. juli 2001 - 14:04 #18
thanks for understanding \"poor\" people....
Avatar billede region Nybegynder
24. juli 2001 - 14:05 #19
god dammed..... jeg opretter et nyt spgm. til dig terry....

( gav dig ellers 50 under avaceret...??? )
Avatar billede region Nybegynder
24. juli 2001 - 14:08 #20
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