sinnvolles Speichermodell gesucht

Tandibur

Mitglied
Hi!

Ich möchte eine Matrix aufbauen und stelle dazu Abfragen an eine MySQL-Datenbank.

Ein vereinfachendes Beispiel zeigt mal den Zusammenhang:

Tabelle_______|Trikotnummer 2 |Trikotnummer 4 |Trikotnummer 9

Mannschaft A__|Müller_________|Meier__________|Schulze
Mannschaft R__|Fritz___________|Paulsen_________|Lehmann

Um diesen Kontext gehts natürlich nicht, aber so versteht es jeder :toll:

Nun stelle ich meine SQL-Abfrage zeilenweise, also
Code:
SELECT SpielerName From Tabelle where Mannschaft = Mannschaft A AND Trikotnummer IN (2, 4, 9)

Nun bekomme ich meine Spielernamen (hoffentlich) in der Reihenfolge der Liste in der Abfrage.

So nun die eigentliche Frage: Wie speichere ich den gesamten Datensatz am sinnvollsten? Ich will erst die Matrix aufbauen und anschließend ausgeben. Ich hatte mir überlegt in einer Liste (Mannschaften) die Name-Trikotnummern-Paare zu speichern, aber ich wüsste nicht so recht wie. Wenn Mannschaft ein Objekt ist und eine Map enthält, mit diesen Paarungen, kann ich da nicht durchiterieren, muss also jedesmal beim Aufbau die Trikotnummer angeben. Kann ich irgendwie in einer Liste diese Paare speichern? Dann enthielte die Liste Mannschaften, die wiederum Listen wären. So könnte ich mit einer Verschachtelung beide Listen durchgehen.

Lars
 
Beim Select muss noch ein ORDER BY rein, sonst kannst du nicht garantieren, dass es in der Reihenfolge auftaucht.
Und wenn du eine Matrix(=array) aufbauen willst, dann ist das ja schon laut Definition klar, was du nimmst.
Wenn es nur darum geht Daten zu speichern... hmmm... du könntest zu jeder Trikotnummer eine Map machen mit Manschaft>Name, oder zu jeder Manschaft Trikotnummer>Name, oder es gibt bestimmt auch noch einige andere Varianten...
Willst du die wirklich nur ausgeben und mehr nicht?
 
Ich will auf einer jsp-Seite eine Tabelle ausgeben. Die Liste wird dem Tabellenelement übergeben
Code:
<display:table name="Mannschaften">
und darin greife ich auf die Werte zu. Mit einfachen Tabellen ist das ja kein Problem, da alle Datenspalten bekannt sind, z.B:
Code:
<display:column property="Trikotnummer" /><display:column property="Spielername" />
so würden alle Trikotnummern mit den dazugehörigen Spielernamen ausgegeben werden.
Da ich nun aber in jeder Zeile eine andere Mannschaft habe und auch vorher nicht weiß, wie viele Spalten es sind, muss ich mit 2 Schleifen arbeiten, denke ich.

Lars
 
kenne mich äußerst waage da aus, aber kannst du es nicht so machen:
Java:
<TABLE>
<%
  for(int i=0;i<manschaftenAnzahl;i++) {
%>
    <TR>
        <TD><%=manschaft.getName()%></TD>
...
    </TR>
<%
}
%>
</TABLE>
 
Na so ähnlich macht das "displaytag" es von allein. Dein Hinweis mit den Arrays klingt richtig gut, bin da jetzt mal dran. Habe bisher noch nie mit Arrays zu tun gehabt, immer nur Listen und Maps.

Ich melde mich dann mit meinem Ergebnis oder meiner nächsten Frage 😀

Lars
 
Auch wenn es durch den äußerst provisorischen Quelltext nicht so rübergekommen ist wollte ich auch auf eine Liste hinaus...
 
Hi,

ich habe es nun mit einer Kombination aus Listen und Maps realisiert.

Java:
List<Map<String, String>> liste

Die übergebene MannschaftsListe wird durchlaufen, zu jeder Mannschaft erfolgt eine Datenbankabfrage.
Code:
SELECT Trikotnummer, Spielername FROM Tabelle WHERE Mannschaft=MannschaftsListe[i] AND Trikotnummer IN (TrikotnummernListe)
Ich schreibe in die Map zuerst alle Trikotnummern der Trikotnummernliste ohne Wert, um auch dann ein Element einer bestimmten Nummer zu haben, wenn es dieses in der entsprechenden Mannschaft nicht gibt.
Dann fülle ich die Map mit den Paarungen Trikotnummer-Spielername aus dem ResultSet.
Java:
while(rs.next()){
                    mannschaftMap.put(rs.getString("Trikotnummer"), rs.getString("Spielername"));
                }
Nach der while-Schleife füge ich die Map in die Liste ein.
Java:
Mannschaften.add(mannschaftmap);

Dann habe ich eine Liste mit Maps, in denen die Paarungen aus Nummer und Name stehen.

Und mein Problem mit der Anzeige werde ich wohl in WebTier posten ...

Danke für die Antworten.

Lars
 

Neue Themen


Zurück
Oben