AllesMeins: /MySQL: Ergebnisse in Rechnung wiederverwenden

Hi,
wie kann ich Informationen einer SELECT Abfrage direkt in MySQL mehrfach verwenden? Also ich will die Anzahl von zwei Spalten bilden, diese als Ergebnis zurück liefern und außerdem noch den Quotienten aus den beiden Spalten bilden. Zur Zeit mache ich sowas wie:

SELECT COUNT(DISTINCT s1), COUNT(s2), COUNT(DISTINCT s1)/COUNT(s2) FROM tabelle

Leider treibt mir das die Laufzeit ziemlich in die Höhe, da die Tabelle eine gewisse Größe erreicht hat. Es wäre also sinnvoll die Ergebnisse wiederzuverwenden. Leider weiß ich nicht wie - mit

SELECT COUNT(DISTINCT s1) as wert1, COUNT(s2) as wert2, wert1/wert2 FROM tabelle

funktioniert es leider nicht. Wie also komme ich um diese unnötigen Doppel-Abfragen herum?

  1. Hi,

    SELECT COUNT(DISTINCT s1), COUNT(s2), COUNT(DISTINCT s1)/COUNT(s2) FROM tabelle

    Leider treibt mir das die Laufzeit ziemlich in die Höhe, da die Tabelle eine gewisse Größe erreicht hat. Es wäre also sinnvoll die Ergebnisse wiederzuverwenden. Leider weiß ich nicht wie - mit

    SELECT COUNT(DISTINCT s1) as wert1, COUNT(s2) as wert2, wert1/wert2 FROM tabelle

    funktioniert es leider nicht. Wie also komme ich um diese unnötigen Doppel-Abfragen herum?

    Entweder programmseitig, wo die Daten weiterverarbeitet werden, oder mit einer temporären Tabelle:

      
    SELECT  
      t.*,  
      t.wert1/t.wert2 AS wert1_durch_wert2  
    FROM  
     (SELECT  
       COUNT(DISTINCT s1) AS wert1,  
       COUNT(s2) AS wert2  
      FROM tabelle  
     ) AS t
    

    Bis die Tage,
    Matti

    1. Dankeschön, genau das habe ich gesucht