MudGuard: gleichzeitiges lesen von unterschiedlichen Felder mit sql (mysql)

Beitrag lesen

Hi,

Gehen tut es in beiden Fällen, die Lösung mit 3 Rows ist aber sicherlich effizienter.

3 Rows: 3 SELECTs mit UNION ALL verbunden

geht auch ohne UNION, einfach die 3 Bedingungen mit OR verknüpfen:

SELECT * FROM table WHERE 
       (maschine = 'T1' AND varname = 'drehzahl') 
    OR (maschine = 'T2' AND varname = 'temp') 
    OR (maschine = 'T3' AND varname = 'drehzahl')
;

oder

SELECT * FROM table WHERE 
       (maschine IN ('T1','T3') AND varname = 'drehzahl') 
    OR (maschine = 'T2' AND varname = 'temp') 
;

1 Row: Dreifacher Selfjoin

oder

SELECT 
    (SELECT istwert FROM table WHERE maschine = 'T1' AND varname = 'drehzahl') as T1Drehzahl, 
    (SELECT istwert FROM table WHERE maschine = 'T2' AND varname = 'temp') as T2Temp, 
    (SELECT istwert FROM table WHERE maschine = 'T3' AND varname = 'drehzahl') as T3Drehzahl
;

cu,
Andreas a/k/a MudGuard