Thread [DBIx::Class] Query mit mathematischen Operatoren? (10 answers)
Opened by martin.g at 2013-11-22 14:36

martin.g
 2013-11-22 14:36
#172156 #172156
User since
2013-09-20
40 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich bin gerade echt am Verzweifeln mit DBIx::Class. Man kann bei den Abfragen ja fast alles irgendwie hinkonstruieren, aber ich komme einfach auf keinen grünen Zwei beim Rechnen mit Operatoren. Alles wofür es Funktionen gibt (Cosinus, Absolut Wert usw.) ist kein Problem, aber ich schaffe es nicht, zwei Werte zu addieren.

Code: (dl )
1
2
3
4
5
6
7
8
$schema->resultset('XY')->search(
{},
{ select => [
{ ABS => -2, -as => 'a' },
{ '-' => [ 12, 17 ], -as => 'b' },
{ ABS => \'12 - 17', -as => 'c' }
] }
} );

a funktioniert, b evaluiert zu -(12, 17) und schlägt mit MySQL Syntaxfehler fehl. c funktioniert wieder, eignet sich aber nicht für Mathematik zwischen komplexeren Konstrukten. So könnte ich mir DBIx gleich schenken und mein Statement komplett von Hand schreiben. Gäbe es eine MySQL Funktion ADD, SUBTRACT usw. würde das ja auch helfen, aber so bin ich mit meinem Latein am Ende. Habe diverse Formate ausprobiert und finde aber auch nirgends Doku dazu. Im Manual Cookbook steht auch nur so ein Beispiel wie mein c drinnen.

Effektiv wollte ich dieses Statement abbilden, aber schaffe es nicht.
Code: (dl )
1
2
3
SELECT
(UNIX_TIMESTAMP(begin) - UNIX_TIMESTAMP("2013-11-22 05:50:12")) AS timediff_begin,
( UNIX_TIMESTAMP("2013-11-22 09:50:12") - UNIX_TIMESTAMP(end) ) AS timediff_end

Vorübergehend werde ich das als Skalarreferenz übergeben und so dem Beispiel folgen, aber befriedigend ist das nicht.

Hat von Euch jemand eine Idee? Ich kann doch da nur etwas übersehen habe, denke ich.

Viele Grüße
Martin

View full thread [DBIx::Class] Query mit mathematischen Operatoren?