# aus mehreren sql tabellen matchen und sortieren



## derFranke (21. Mai 2008)

hallo,

ich habe eine verwaltung von kletterwänden, 20 stück, der name der tabelle ist der name der kletterwand.
in den tabellen habe ich routen die ich schon geschafft habe, diese sind mit einem schwierigkeitsgrad versehen,
einer int-zahl.
nun will ich alle routen anzeigen, die ich schon geschafft habe mit dem grad und über ALLE absteigend sortieren lassen.
es geht nicht, er sortiert innerhalt einer wand absteigend richtig, fängt dann aber mit der zweiten wieder von vorne an.
so in etwa.

7,7,6,6,5,4   ....  7,6,6,6,5,5   ... usw

es sollte aber sein:

7,7,7,6,6,6,6,5,5,5  ..... also das sort über alle.

mein sql query ist:

```
rs = stmt.executeQuery("SELECT id,name,grad,Tstatus FROM "+walls[j]+" WHERE Tstatus='Vorstieg Rotpunkt' ORDER BY grad DESC");
```

walls ist mein string[] in dem alle 20 tabellennamen gespeichert sind.

danke für eine hilde von euch
mfg
tino


----------



## dajos7 (21. Mai 2008)

*Hilde* ist gerade nicht zu hause. Aber die würd ich Dir auch nicht geben (kl. Scherz) 

Funktioniert das?


```
SELECT id,name,grad,Tstatus FROM "+walls[0]+","+walls[1]+","+walls[2] +.. alle 20 Tabellen...... +" WHERE Tstatus='Vorstieg Rotpunkt' ORDER BY grad DESC
```

Falls nicht, versuch vlt GROUP BY.


----------



## Guest (21. Mai 2008)

> ... der name der tabelle ist der name der kletterwand....



Das hört sich nicht gut an, damit beginnen deine Probleme doch schon (siehe deine Frage).

Wie wäre es mit einer Tabelle mit den Namen [Wand] und einem Primärschlüssel [PK] mit den Kletterwänden und einer Tabelle mit den Routen [Route], wobei du über einen Verweis [WandFK] auf die zugehörige Kletterwand verweist?

Dann wäre deine Abfrage einfach:

select * from Wand, Route where Route.WandFk = Wand.PK order by grad desc


----------



## dajos7 (21. Mai 2008)

Hallo,

ja da hat der Gast allerdings recht. Ich weis ja nicht in wieweit die Struktur für den Threadsteller schon vorgegeben ist, vlt muss er ja mit einem bereits exsitierenden System arbeiten. Aber Normalisierung sollte man hier glaub ich mal durchführen.

Zum Nachlesen:

Normalformen


----------



## derFranke (21. Mai 2008)

danke schon mal,
also wie idee 1, die walls anzuhängen mit walls[0], walls[1] geht nicht statisch, da sie immer mehr werden.

die struktur ist schon so:

eine haupttabelle, darin steht:

id, wandname, gebiet, bundesland, routenanzahl

zu jedem eintrag zu wandname gibt es nun die tabelle der wand, sie heißt halt so wie der wandname, funktioniert alles ganz gut soweit, in dieses stehen die: routenname, grad, status             (status = 1 geschafft, 2 nicht)

das ist der IST-zustand, weiß net genau was der zweite vorschlag von euch anders machen soll,
ich kann nun ja alle routen, aller wände, die ich schon geschafft habe ausgeben, nur eben nicht komplett sortiert, sondern nur innerhalb einer wand

mfg
tino


----------



## dajos7 (21. Mai 2008)

> also wie idee 1, die walls anzuhängen mit walls[0], walls[1] geht nicht statisch, da sie immer mehr werden.



Dann kann man es auch dynamisch als String generieren ; es gibt ja Schleifen ;P 

EDIT

Also dass ich das nochmal richtig verstehe Du willst immer nur innerhalb einer Wandart selektieren, oder über alle Wandarten?


----------



## Guest (21. Mai 2008)

Ahhh, neuer Input...



> die struktur ist schon so:
> 
> eine haupttabelle, darin steht:
> 
> ...



Dann also statt n-Tabellen mit allen Routen einer Wand, sollte man eine Tabelle mit allen Routen aller Wände anlegen:

eine haupttabelle [Wand], darin steht (wie bisher):

id, wandname, gebiet, bundesland, routenanzahl


eine Routentabelle [Route] (neu), darin steht:
id, wandId, routenname, grad, status

Die Abfrage lautet dann:

select * from Wand, Route where Route.wandId= Wand.Id and routenname='Vorstieg Rotpunkt' order by grad desc

Dann kannst du neue Wände und Routen hinzufügen so viel du willst ohne neue Tabellen anlegen zu müssen.

Der Link von dajos7 ist hilfreich aber ein wenig 'Heavy'...

Zum Einstieg in DB Entwurf hilft erst einmal 

http://www.me-asal.de/access/17-normalformen.htm]www.me-asal.de/access/17-normalformen.htm

...man möge mit den Link auf eine MS-Access bezogene Seite verzeihen ;-)

Zum Vertiefen:

http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/


----------

