mysql
2012-04-03 7 views -1 likes 
-1
SELECT * FROM 
    (SELECT sum(DATA.dayMB) as "totaldayMb", 
      data.customerid 
    FROM DATA,customer 
    WHERE data.customerid=customer.customerid 
      AND customer.projectid='"+ ProjectID +"' 
      AND customer.stateid='"+ StateID +"' 
      AND DATA.dataDate between '"+ initialDate +"' 
      AND '"+ finalDate +"' 
      AND data.upstatus='"+upstatus+"' 
    GROUP BY data.customerid 
    ORDER BY sum(DATA.dayMB) desc 
    ) 
    WHERE ROWNUM <= 25 

In dieser Abfrage ich 25 Benutzer auswählen möchten, die max Daten b/w dis Datum verwenden. Ich verwende mysql.Jede abgeleitete Tabelle muss einen eigenen Alias ​​haben (

+0

Wie lautet der Titel? – PresleyDias

Antwort

1
SELECT * FROM 
    (SELECT sum(DATA.dayMB) as "totaldayMb", 
      data.customerid 
    FROM DATA,customer 
    WHERE data.customerid=customer.customerid 
      AND customer.projectid='"+ ProjectID +"' 
      AND customer.stateid='"+ StateID +"' 
      AND DATA.dataDate between '"+ initialDate +"' 
      AND '"+ finalDate +"' 
      AND data.upstatus='"+upstatus+"' 
    GROUP BY data.customerid 
    ORDER BY sum(DATA.dayMB) desc 
    ) AS baseview 
    LIMIT 25 

Mind the AS baseview in der vorletzten eine Zeile.

Ofcourse dies Sinn macht, nur dann, wenn die innere Abfrage im Abfrage-Cache ist. wenn nicht, verwenden nur

SELECT sum(DATA.dayMB) as "totaldayMb", 
      data.customerid 
FROM DATA,customer 
WHERE data.customerid=customer.customerid 
      AND customer.projectid='"+ ProjectID +"' 
      AND customer.stateid='"+ StateID +"' 
      AND DATA.dataDate between '"+ initialDate +"' 
      AND '"+ finalDate +"' 
      AND data.upstatus='"+upstatus+"' 
GROUP BY data.customerid 
ORDER BY sum(DATA.dayMB) desc 
LIMIT 25 
0

Beschränken Sie die Anzahl der zurückgegebenen Zeilen mit dem Operator LIMIT (docu @ MySQL) und nicht mit einer zusätzlichen Abfrage.

So vermeiden Sie auch Ihren Fehler.

SELECT sum(DATA.dayMB) as "totaldayMb", 
     data.customerid 
FROM DATA,customer 
WHERE data.customerid=customer.customerid 
     AND customer.projectid='"+ ProjectID +"' 
     AND customer.stateid='"+ StateID +"' 
     AND DATA.dataDate between '"+ initialDate +"' 
     AND '"+ finalDate +"' 
     AND data.upstatus='"+upstatus+"' 
GROUP BY data.customerid 
ORDER BY sum(DATA.dayMB) desc 
LIMIT 0,25 
+0

Meinst du "LIMIT 0,25" oder "LIMIT 25"? –

+0

@EugenRieck mein Schlechter. Danke. – Sirko

Verwandte Themen