bert: Spaltennamen einer SQL-Abfrage auslesen

Beitrag lesen

Hallo Hotte,

danke für die schnelle Antwort. Leider ist das noch nicht ganz das, was ich suche. Ich frage nicht einfach eine Tabelle ab, sondern ich habe ein SELECT-Statement, das dynamisch konfiguriert wird. Ich kenne es also nicht vorher, es kann aber recht lang sein, hier mal ein "kurzes" als Beispiel:

select Date_Format(FROM_UNIXTIME(v.Zeitstempel) , "%d.%m.%Y") Datum, l.Name Filiale,
     sum(if(a.name='Jacke', p.Anzahl , 0)) 'Anzahl Jacken',
     sum(if(a.name='Hose', p.Anzahl , 0)) 'Anzahl Hosen',
     sum(if(a.name='Schuh', p.Anzahl , 0)) 'Anzahl Schuhe'
  from verkauf v LEFT JOIN verkauf_positionen p using (VerkaufsID)
  left join map_locations l on (l.LocationID=v.locationID)
  left join artikel a on (p.ArtikelID=a.ArtikelID)
 where v.ENTRYTYPE = 'ACTIVE' and p.EntryType = 'ACTIVE' and l.EntryType = 'ACTIVE'
 and (v.Status = 200 or v.Status = 300)
 and (FROM_UNIXTIME(v.Zeitstempel) >= STR_TO_DATE('01.12.2007',"%d.%m.%Y")) and (FROM_UNIXTIME(v.Zeitstempel) < STR_TO_DATE('04.03.2008',"%d.%m.%Y"))
 group by v.VerkaufsID

Meistens sind die Statements noch lustig verschachtelt usw. Jedenfalls ergibt dieses SELECT was in der Form (Datum, Filiale, Jacken, Hosen, Schuhe).
Mit meinem Script krieg ich in meiner Datei sowas angezeigt (Jacken, Datum, Schuhe, Filiale, Hosen), also ziemlich durcheinander.

my $ref  = $dbh->selectall_arrayref("describe table");
my @cols = map{$_->[0]}@$ref; # array mit Spaltennamen

Im Prinzip kann ich ein DESCRIBE auch auf ein SELECT anwenden, das ergibt aber etwas anderes.

Noch andere Ideen?