oder (MySQL): Array oder Resultset transponieren
Viennamade
- php
0 Cheatah0 Viennamade0 Cheatah
0 wahsaga
Hallo!
Das schöne Wort transponieren hab ich aus Excel. Dort kann man aus
aaa abc
bbb durch Transponieren das machen: abc
ccc abc
Jetzt erhalte ich aus MySQL ein Recordset und will es in einen PHP-Array einlesen. Aber eben transponiert. Also in der herkömmlichen Vorstellung über Arrays gesprochen sollen die Feldwerte von oben nach unten gehen. Also
Ludwig|Amadeus
Beethoven|Mozart
und nicht
Ludwig|Beethoven
Amadeus|Mozart
Wie mache ich das bitte?
Danke
Viennamade
Hi,
Wie mache ich das bitte?
wenn Du _vor_ Absetzung des Statements _exakt_ die Zahl der Datensätze des Resultsets kennst, ist das zumindest denkbar. Es wird aber sehr, sehr hässlich - eine Mischung aus diversen Selfjoins und/oder Subselects.
Cheatah
Hallo!
Wie mache ich das bitte?
Es wird aber sehr, sehr hässlich - eine Mischung aus diversen Selfjoins und/oder Subselects.
Nein, Selfjoins, Subselects mag ich nicht :-)
Ich hab schon was anderes ... mein Problem war ich weiß nicht wieviele Spalten die Abfrage hat, aber da gibt es sicher eine Abfrage dafür! Die finde ich mir raus.
Ohne Dein ...
wenn Du _vor_ Absetzung des Statements _exakt_ die Zahl der Datensätze
wäre ich nicht draufgekommen - aber was mysql_num_rows kann .. dafür gibt es sicher ein Äquivalent für die Spalten!
Danke
Viennamade
Hi,
Es wird aber sehr, sehr hässlich - eine Mischung aus diversen Selfjoins und/oder Subselects.
Nein, Selfjoins, Subselects mag ich nicht :-)
ich sag ja: sehr, sehr hässlich ;-)
Ich hab schon was anderes ...
Nämlich?
mein Problem war ich weiß nicht wieviele Spalten die Abfrage hat,
Meinst Du _vor_ oder _nach_ der Transponierung? Falls letzteres: Das entspricht dem definitiven Wissen über die Zahl der Zeilen vor der Transponierung. Falls ersteres: Das lässt auf einen Fehler im DB-Layout schließen ...
was mysql_num_rows kann .. dafür gibt es sicher ein Äquivalent für die Spalten!
Du möchtest unter gar keinen Umständen im Live-Betrieb "*" selektieren. Du weißt _garantiert_, wie viele Spalten Du selektieren wirst, oder Deine Probleme sind deutlich weitreichender als Du glaubst.
Cheatah
Hallo!
Ich hab schon was anderes ...
Nämlich?
Ähem. Mein Problem war, daß ich nicht wußte wie ich das Resultset einer SELECT-Abfrage so durchlaufe, daß ich von oben nach unten die Datensätze bekomme und innerhalb dieser Datensätze wiederum von oben nach unten die Werte der Felder.
Also:
Komponist 1
Wolfgang
Mozart
Komponist 2
Johann
Bach
Wobei die HTML/PHP-Seite für verschiedene Abfragen gelten soll, die Komponisten haben 2 Felder (Vorname, Nachname), die Bildhauer zb. 3 Felder. Dieser Unterschiedlichkeit machte mir die Probleme und so kam ich auf die verrückte Idee des Transponierens, irgendwann aber fand ich die Lösung in
while(list($key1,$value1)=each($sql_fetch_rows))
und so funktioniert das jetzt gut.
Besten Dank nochmals,
Viennamade
hi,
aaa
bbb
ccc
das ist schlicht und einfach ein zweidimensionales array.
deine ergebnisse der DB-abfrage in einem solchen abzulegen, sollte kein problem darstellen.
anschliessend beim zugriff nur die beiden (nummerischen) indizes vertauschen, und schon hast du das gewünschte.
gruss,
wahsaga