PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aus zwei Tabellen, Ergebnistabelle(Kreuz) erstellen?



ciedan
24-10-2006, 19:47
Mahlzeit,

ich weiss der Threadtitel gibt nicht viel her, aber ich weiss nicht wie ich es besser beschreiben soll :o.

Ich habe die folgenden zwei Tabellen:


Spieler:
Pass | Name | Vorname | Telefon | Addresse
055 | Dani | Alex | 255 | Muster
088 | Maxi | Muster | 244778 | Irgendwo
012 |Hansi | Muster | 255477 | Nochmal irgendwas

Ergebnis:
Spieler_weiss|Spieler_Schwarz|Ergebnis|Runde
055 | 088 | 1 | 1
088 | 012 | 0 | 2
012 | 055 | 1 | 3


Um daraus eine Ausgabe der einzelnen Runden zu bekommen reicht ja eine doppelte Inner Join Verknüpfung:


SELECT c.Spieler_weiss AS Pass1, a.Name AS
Spielerweiss, a.Vorname AS vora, c.Spieler_Schwarz AS Pass2, b.Name AS
Spielerschwarz, b.Vorname AS vorb, c.Ergebnis as Erg
FROM Ergebnis c
join Spieler a ON c.Spieler_weiss = a.Pass
join Spieler b on c.Spieler_Schwarz = b.Pass
where c.Runde='2';

Soweit so gut :)

Jetzt möchte ich, aber auch eine Kreuztabelle erstellen, aber ich komm nicht auf den Ansatz um sie zu erstellen :confused:
Natürlich mit PHP, aber ich weiss nicht wie ich sie sortiert und vorallem ohne Verschiebung der Ergebnisse hinbekomme. So will ich sie am Ende haben(mit Namen natürlich aber hab ich jetzt mal wegelassen):


| 012 | 055 | 088 | Summe
012 | XXX | 1 | 1 | 2
055 | 0 | xxx | 1 | 1
088 | 0 | 0 | xxx | 0


Geht das überhaupt? Kann mir einer ein paar Tips geben, ich nehm auch gerne gute RTFM-Links.

Bis denn
ciedan

Christoph
25-10-2006, 08:21
Das sollte eigentlcih gehen, ween Du die Ergebnistabelle mit sich selber verknüpfts, aber ohne Join-Bedingung, also einfach nur SELECT ... FROM tabelle1, tabelle2.

Jasper
25-10-2006, 23:01
Geht das überhaupt? Kann mir einer ein paar Tips geben, ich nehm auch gerne gute RTFM-Links.


nein, das geht so ohne weiteres nicht, da sich die anzahl der spalten in abhängigkeit der anzahl der zeilen ändert. für eines fest anzahl zeilen kein problem mit subselects oder pivot-query.
ich sehe keine andere möglichkeit als die spalten einzeln zu generieren und in der ausgabe zusammenzusetzen.

-j

Turbohummel
26-10-2006, 08:20
Interessante Aufgabenstellung, da werd ich mal ein wenig drüber nachdenken, so auf anhieb fällt mir auch nix ein.

Vielleicht wenn man vorher die Anzahl der Spalten bestimmt?

ciedan
26-10-2006, 11:08
Mahlzeit,

für eines fest anzahl zeilen kein problem mit subselects oder pivot-query.
ich sehe keine andere möglichkeit als die spalten einzeln zu generieren und in der ausgabe zusammenzusetzen.

-j

danke für den Hinweis, werd ich mir mal subselects und pivot-querys anschauen. Da ja beim Beginn des Turniers feststeht, wie viele Runden (Spalten) und Spieler es gibt kann ich es dann vielleicht manuell anpassen.

bis denn
ciedan

Christoph
27-10-2006, 14:13
Oh sorry, jetzt sehe ich, dass die Inhalte als Spaltenbeziechner (Attribute) zurückgegeben werden und ganz andere Daten als Spaltenwerte. Das geht natürlich so allgemein nicht mit SQL (es sei denn Du verwendest PL/[pg]SQL).

Warum selektierst Du dir die Daten nicht einfach und baust die Kreuztabelle in deiner Host-Sprache zusammen?