[MySQL] Nach Spaltenindex suchen

Thomas D

Erfahrenes Mitglied
Hallo!

Ich habe folgende Tabelle:

tab (id, produkt, format, druck, papier)

und möchte folgende Abfrage durchführen:

Code:
SELECT COL[n] FROM tab GROUP BY COL[n]

Ich möchte also nicht 'produkt' oder 'format' schreiben, sondern COL[1] oder COL[2]. Dies möchte ich deshalb so machen, da ich das ganze per PHP aufrufe und je nach Fortschritt die Abfrage mit dem jeweiligen Index ausgeführt werden soll. Jetzt möchte ich fragen, ob es in MySQL überhaupt so etwas gibt, dass einen die Spaltennamen per Index ansprechen lässt? Alternativ wäre ich auch für einen Hinweis, wie man die Spaltennamen einer Tabelle generell auslesen kann, dankbar.

MfG, Thomas D.

BTW: Habe mir die MySQL-API bereits zu Gemüte geführt, auf die Schnelle allerdings nichts Passendes gefunden ...
 
Hallo,

zu deiner ersten Frage:

es gibt an einigen Stellen die Möglichkeit mit Indizes zu arbeiten. Was davon unterstützt wird, hängt von dem verwendten RDBMS ab.
In MySQL kannst du Indizes verwenden z.B. in der ORDER BY ,GROUP BY usw.
Allerdings beziehen sich die Indizes dann nicht auf die Struktur der Tabelle, sondern auf die Reihenfolge der Spalten in der SELECT-Klausel.

In der SELECT-Klausel wäre mir das neu und auch nicht ganz ungefährlich, da sich die Tabellenstruktur durchaus ändern kann, die Abfrage und damit die Spalten in der SELECT-Klausel bleibt aber konstant.

zu deiner zweiten Frage:

du kannst die Metadata zu den Spalten einer Tabelle entweder so abfragen:

PHP:
$result = mysql_query("SHOW COLUMN FROM <table>");
while ($row = mysql_fetch_....) {
....
}

oder aber wenn du beliebiges SELECT-Statement hast und nicht weisst, welche Spalten sich dahinter verbergen:

Mittels mysql_num_fields bekommst du die Anzahl der Felder in der Abfrage.
Dann iterierst du darüber und bekommst mittels
mysql_fetch_field(...) Zugriff auf die Metadaten, sofern welche vorhanden sind.

Markus
 
Zurück