Autor Beitrag
Tommy82
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 17.07.02 21:39 
:?:

ich habe da ein sehr großes problem, was aber warscheinlich für manche von euch ein kleines Problem sein dürfte.
Ich habe 2 Tabellen.
( ABCD
AX
B X
C X
D X) <<< davon 2, einmal Punkte und einmal Tordifferenz.
Nun meine Frage : Wie kann ich meinem Delphi Programm sagen, das er erst nach Punkten sortieren soll, und wenn er dies getan hat und er (z.B.) zwei entdeckt, die die selbe Punktzahl haben, dann soll er nachschauen, wer von diesen beiden die beste Tordifferenz hat.
ist dies möglich und wenn ja, dann sxchreibt mir bitte die Antwort, ich benötige sie nämlich Dringend.

Danke schon mal im Voraus.
catweasel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Mi 17.07.02 21:46 
Titel: Probier mal...
Hi,

Schau dir mal die Komponenten DBLookupbox und DBlookuplistbox an,
da kannst du Master/Detailbeziehungen einrichten.
Master wäre die Punktzahl, detail die Tordifferenz.
Müsstest du halt getrennt speichern, aber das dürfte wohl nicht das Problem sein.
Cool siehts aus, wenn man das dann als Tree darstellt...

CU
Catweasel
Steffer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 299



BeitragVerfasst: Mi 17.07.02 22:49 
Warum hast du 2 Tabellen?
Die ganze Sache kannst du mit einem Index in einer Tabelle lösen.
Dein Problem dabei ist, das du zuerst absteigend nach Punkten sortierst:

3
3
2
2
1
1
0

Aber im 2. Wert wieder aufsteigend nach der Differenz.

3/1
3/2
2/2
2/4
1/2
1/3
0/3

Daher solltest du den Differenzwert intern "drehen". Z.B. 100 - Differenz
Das ergäbe:
3/99
3/98
2/98
2/96
1/98
1/97
0/97

Damit kannst du dann wieder absteigend, in einer Tabelle sortieren.
Das kannst du aber nicht als CalcField verwenden, da du diese Felder nicht im Index verwenden kannst.

_________________
Keine Signatur ...
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Do 18.07.02 08:17 
Hallo Tommy82,

leider verstehe ich das Problem auch nicht so ganz. Welche 2 Tabellen hast du genau?

Wenn du sortieren willst nach einem Wert, der nicht als Index in der Tabelle definiert ist, bietet sich eine SQL Abfrage an, bei der du die "ORDER BY" Klausel verwenden kannst.

Poste doch bitte einmal die Struktur der beiden Tabellen, dann schlage ich ein SQL Statement vor.

_________________
Live long and prosper
MrSpock \\//
Tommy82 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 18.07.02 11:41 
Leider kenne ich mich noch nicht soo gut in Delphi aus, daher bitte ich um eine Antwort, die selbst ein Anfänger (so wie ich es einer bin *snief*) verstehen könnte.
:oops:

Ok, die tabellen sind folgendermaßen aufgebaut :

A B C D E <<< Steht für Klassen der Jahrgänge
A
B
C
D
E
# <<<< Summe von A B C D E
Diese Tabelle ist jetzt für die Punkte. Jetzt soll er erst die Summen vergleichen, die größte raussuchen, die zweitgrößte usw usw usw.
Wenn er zwei entdeckt, die gleich sind, dann soll er die Summe der Tordifferenz von A B C D E anschauen (welches auch so eine tabelle sein sollte).
:?:
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Do 18.07.02 12:03 
Hallo Tommy82,

so wie ich dich verstanden habe, existiert zur Zeit nur die Idee 2 Tabellen zu erstellen, aber die Tabellen sind noch nicht erstellt.

In diesem Fall schlage ich genau wie Steffer vor, nur eine Tabelle zu erstellen, die folgende Felder hat:

Name Typ Länge
Klasse A(lpha) 1
Punkte S (Integer kurz)
ToreErzielt S
ToreKassiert S

Bevor du diese Tabelle erstellst, solltest du aber bitte noch einmal ein Beispiel posten (da ich die möglicherweise falsch verstanden habe).

Du sagst A, B, ..., E steht für Klassen der Jahrgänge.
Wäre, dann z.B ein Eintrag :
Jhrg80 - 10 Punkte

und was bedeutet dieser Eintrag? Oder ist der Eintrag:

Hein Rühmann - Jhrg 80 - 10 Punkte

und es gibt noch viele solche Datensätze?

Wie summiere ich dann die Daten?

_________________
Live long and prosper
MrSpock \\//
Tommy82 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 18.07.02 21:26 
Titel: So sollen die tabellen aussehen ! {Das beispiel}
A B C D E {Jahrgänge}
A X-------- {wer gegen wen Spielt}

B--X-------

C----X-----

D-------X--

E----------X

# Sa Sb Sc Sd Se {Summe, wieviele Punkte, bzw. Tordifferenz eine mannschaft (Klasse) hat.
{Die Bindestriche sind nur, damit die X´e nicht verrutschen, also nicht zu beachten}


So sieht die tabelle aus. jetzt habe ich es so, das er die Summe (Sa,Sb,Sc,Sd,Se) Vergleicht und Sortiert. Nur fehlt noch eines: Wenn zwei gleich sind. Wie kann ich es
1.: Herausfinden, und zweitens , dann etwas anderes machen (z.b dann diese beiden in einer anderen tabelle bvergleichen und dann ist der, der bessere, der eine besseree Tordifferenz hat).
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Sa 20.07.02 21:31 
Hallo Tommy82,

ich nehme mal an deine Tabelle heißt MyTab hat die Felder
Jhrg, Punkte, TorDiff.

Dann würde folgendes SQL Statement die Sortierung durchführen:

ausblenden Quelltext
1:
2:
SELECT Jhrg, Punkte, TorDiff FROM MyTab
ORDER BY Punkte DESC, TorDiff DESC


Falls es nicht funktioniert, nenne mir doch bitte mal deine Tabellenstruktur.

_________________
Live long and prosper
MrSpock \\//
Tommy82 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Di 23.07.02 19:30 
Titel: Problem gelöst
Danke für eure hilfe, ich habe das Problem nun gelöst. Gut, dass es olch ein Forum gibt.
Da wäre ein anderes Problem, aber das steht unter einem anderen theme (Procedure im Hintergrund)