• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Funktion mit Datensatzwerten

Heavy-Dee

Mitglied
Hallo zusammen,
kann mir jemand sagen wie die Daten eines Datensatzes in eine Funktion einbinden kann.
In der mySQL Anweisung sind die Spalten 's_tag', 's_monat' und 's_jahr' und ich möchte in der Spalte 'Tagzahl' die Tageszahl (0-6) angezeigt bekommen.

Code:
SELECT tbl_save.fk_status_id as schicht, tbl_save.id as s_id, tbl_tag.tag as s_tag, tbl_monat.monat as s_monat, tbl_jahr.jahr as s_jahr, tbl_save.schicht_ende as s_ende,
DATE_FORMAT('2013-04-12', '%w') as Tagzahl 
FROM tbl_save ...

Mit dem statischen Datumswert '2013-04-12' funktioniert es ja auch, aber wie bekommen ich es mit den Werten eines jeden Datensatzes angezeigt?
 
Werbung:
Wieso hast du überhaupt drei Spalten für das Datum??? Das ist doch dein eigentliches Problem! Nutze eine Spalte mit dem Datentyp date
 
... weil der ursprüngliche Programmierer die Datenbank so designed hat. Ist leider nicht mehr zu ändern.
Finde ich jetzt aber auch nicht so schlimm. das Problem ist nur ich benötige jetzt bei der Abfrage schon eine Selektierung der Daten incl. der Tageszahl.
Eine spätere Selektierung in php ist in diesem Fall zu aufwendig und sehr schwer zu realisieren.
Deshalb wäre es ganz schön wenn das so funktionieren würde.
 
Werbung:
Ich würde trotzdem die Datenbank ändern. Auf das Datum wird doch bestimmt nicht an endlos vielen Stellen zugegriffen.

Versuche mal: DATE_FORMAT(concat(`s_jahr`, '-' , `s_monat`, '-', `s_jahr`), '%w')
 
Hatte ich schon mal versucht.
Folgende Fehlermeldung:

MySQL meldet:
Unknown column 's_jahr' in 'field list'


wenn ich 's_jahr' durch 'tbl_jahr.jahr' ersetze -> selber Fehler
 
Werbung:
Code:
SELECT tbl_save.fk_status_id as schicht, tbl_save.id as s_id, tbl_tag.tag as s_tag, tbl_monat.monat as s_monat, tbl_jahr.jahr as s_jahr, tbl_save.schicht_ende as s_ende,
...
FROM tbl_save ...

Ist das wirklich so, dass die zu selektierenden Felder aus VERSCHIEDENEN Tabellen kommen? Ist schon mal ein sehr schlechtes DN-Design... aber davon mal abgesehen.

Spaltenaliase wie s_jahr, s_tag,etc können NICHT in Funktionen 'übernommen' bzw verwendet werden; insofern ist die Fehlermeldung richtig.

In Funktionen etc sollten/müssen die korrekten Spaltenbezeichnungen ggf. mit Tabellenqualifizierer angegeben werden; z.B.

Code:
DATE_FORMAT(CONCAT_WS( '-' ,  tbl_tag.tag, tbl_monat.monat, tbl_jahr.jahr) , '%w')
 
Zurück
Oben