PDA

Vollständige Version anzeigen : Nachträgliche Durchnummerierung in Abfrage :-(


exma
17.10.2001, 13:43
hi ihr VBA Freakx ;)
ich hätte da mal wieder ein kleines Problem, dass auf Hilfe wartet :) also ich hoffe ihr könnt mir helfen.

Ich benutze Access 2000.
Also ich habe eine Abfrage mit 2 Verknüpften Tabellen und 3 Feldern + 1Feld für die Nummerierung.


Aufgabenstellung:
Das Ergebniss einer Abfrage noch nachträglich durchnummeriert werden.

Problem:
Die Abfrage durchläuft etliche Datensätze und gibt als Ergebniss, die 5 Umsatzstärksten Firmen eines Landes aus.
(Problem 1: Nicht alle Länder haben 5 Firmenkunden(Auf Grund der Besseren darstellung in einem Report sollen diese Länder trotzdem bis 5 gezählt werden)
Problem 2: Wie Nummeriere ich Länderabhängig?
Ich verstehe nicht wie ich der Abfrage sagen soll, das sie nach dem Land schaut und vgl ob es Umsatz dazu gibt.

wenn ja soll die abfrage mir vor den Wertgrössten Datensatz eines jeden Landes eine 1 schreiben,..... bis zu Datensatz 5.


Gibt es weniger als 5 Datensätze, die einem Land zugeordnet sind soll die Abfrage trotzdem von 1-5 zählen und in die fertig aussgewertete abfrage ein "-" schreiben

vielen dank für eure antworten im voraus

gruss exma

Kurt aus Kienitz
17.10.2001, 15:28
Hallo,

Probier ersteinmal aus, ob Du einer fortlaufende Nummierung für die komplette Abfrage hinbekommmst.

Dazu sieh mal bei DonKarl http://www.donkarl.com/AccessFAQ.htm unter 3.11 LAUFENDE NUMMER IN ABFRAGEN nach.

exma
17.10.2001, 15:37
jo durchnummerieren geht, nur wird die 4 ausgelassen. 1-15 ohne 4 sind sonst eingetragen worden.....

thx aber wie bekomme ich mein prob jetzt in den griff?

Kurt aus Kienitz
17.10.2001, 15:43
Hallo,

Du hast also soetwas definiert RowNum: (Select Count (*) FROM [Artikel] as Temp WHERE [Temp].[ID] < [Artikel].[ID])+1

Den WHERE-Teil müsstest Du nun so ändern, das die RowNum pro Land und Firma ermittelt wird.

Wie sieht denn die Definition von RowNum bei Dir aus ?

exma
17.10.2001, 15:52
Komplette Beschreibung:
Eingebunde Tabelle in der Testumgebung!!!:
tbl_sort verknüpft mit der tbl_länder
lng_id
int_Land ------------> lng_landId
int_umsatz txt_land
txt_firmenname

als unterfkt zu int_umsatz habe ich:
In (Select Top 5 [int_umsatz] From tbl_sort Where [int_Land]=[tbl_land].[lng_landid] Order By [int_umsatz] Desc)

<--funkt
so nun zum rownum:


RowNum: (Select Count (*) FROM [tbl_sort] as Temp WHERE [Temp].[lng_ID] < [tbl_sort].[lng_id])+1

aber ich glaube das ist nicht so ganz richtig.

schon mal vielen dank im voraus gruss exma

Kurt aus Kienitz
17.10.2001, 16:04
Hallo,

Nur damit wir nicht aneinander vorbei reden/schreiben:

So sieht es jetzt aus:

lng_id | int_Land | int_umsatz | txt_land | txt_firmenname
1 1 20.000 A-Land Firma 1
2 1 25.000 A-Land Firma 2
3 1 30.000 A-Land Firma 3
4 1 35.000 A-Land Firma 4
5 1 40.000 A-Land Firma 5
6 2 20.000 B-Land Firma 1
7 2 25.000 B-Land Firma 2
8 2 30.000 B-Land Firma 3
9 2 35.000 B-Land Firma 4
10 2 40.000 B-Land Firma 5

So soll es aussehen:

lng_id | int_Land | int_umsatz | txt_land | txt_firmenname | RowNum
1 1 20.000 A-Land Firma 1 1
2 1 25.000 A-Land Firma 2 2
3 1 30.000 A-Land Firma 3 3
4 1 35.000 A-Land Firma 4 4
5 1 40.000 A-Land Firma 5 5
6 2 20.000 B-Land Firma 1 1
7 2 25.000 B-Land Firma 2 2
8 2 30.000 B-Land Firma 3 3
9 2 35.000 B-Land Firma 4 4
10 2 40.000 B-Land Firma 5 5



Die RowNum pro Land sollte dann so ermittelt werden können:

RowNum: (Select Count (*) FROM [tbl_sort] as Temp WHERE [Temp].[lng_ID] < [tbl_sort].[lng_id] AND [Temp].[int_land]= [tbl_sort].[int_land])+1

HTH

Kurt aus Kienitz
17.10.2001, 16:34
Hallo,

Ich habe den fürchterlichen Verdacht, das hängt mit dem TOP 5 zusammen.

Das müssen wir irgendwie trennen....

Also erst eine Abfrage die die TOP 5 liefert und dann eine zweite die die Daten der ersten durchnummeriert.

exma
17.10.2001, 16:48
ich hab eben grade geschrien wie ein bescheuerter danke kurt es funkt :) die stunden des krübelns sind endlich vorbei und ich kann endlich nach hause (naja ein kaffee geht noch :) ) hehe


nochmals vielen vielen vielen vielen dank sehr sehr gute arbeit!

exma
22.10.2001, 10:25
Hallo Kurt und alle anderen,

ich habe irgendwie ein problem und weiss nicht wie ich die lösung angehen soll.

Ich habe alles so gemacht, wie kurt es geschrieben hat und das hat eigentlich auch wunderbar geklappt bis auf seht selbst

RowNum int_Land int_umsatz txt_firmenname
1 Deutschland 64544560 fdwefw
2 Deutschland 56353453 ge
5 Deutschland 34334234 qwerezt
3 Deutschland 3443 fdfd
4 Deutschland 3244 fdfsrt
1 Usa 768787 hjj
3 Usa 345678 fgutzui
4 Usa 324432 fdfdsvcxv
2 Usa 78787 uiiuui
5 Usa 4343 vccxv
1 Schweiz 3414 rewre
1 Frankreich 3434 fdvds
1 Ösis 323443 fdfdsfds
1 Italien 2454542 fdewrtew


warum vertauscht access die zahlen obwohl die alles eindeutig ist.

das ist wirklich wichtig, da das ganze bis heute mittag fertig sein muss. ich wäre euch also 10000000mal dankbar :-) bitte helft mir. liebe grüsse exma

exma
22.10.2001, 11:19
hmm mir fällt auf, das wenn ich z.b 20 deutschlandwerte eingebe, sich die nummerierung hochsetzt... irgendwas stimmt also nicht im sql statement oder???

bitte bitte helft mir

gruss exma

MarioR
22.10.2001, 11:43
Hallo,

mal ein Schuss ins Blaue. Ich denke, dass es so aussehen müsste:

...
(Select Count (*)
FROM [tbl_sort] as Temp
WHERE [Temp].[int_umsatz] >= [tbl_sort].[int_umsatz]
AND [Temp].[int_land]= [tbl_sort].[int_land])+1 AS RowNum
...

exma
22.10.2001, 11:48
@Mario

biiiiiiiiiiggggggggg thhhhxx rettest mir den hals. und ich sitze stundelang hier und versuche alle mögl kombinationen *grr*

so wie es aussieht funzt das ganze prächtig vielen vielen vielen dank
achso die +1 muss wech sonst gehts bei 2 los und as rownum geht nicht, sprich
fertig ist das ganze so:


RowNum: (Select Count (*)
FROM [tbl_sort] as Temp
WHERE [Temp].[int_umsatz] >= [tbl_sort].[int_umsatz]
AND [Temp].[int_land]= [tbl_sort].[int_land])


exma