2016-08-08 51 views
0
mit

Nur versuchen, diese Abfrage Arbeit zu machen, aber es ist ein bisschen schwierig für mich ..Fehler mit SQL-Syntax, wo

SELECT 
    *, 
    COUNT(*) AS total FROM_UNIXTIME(consume_time,'%Y-%m') AS fecha 
FROM 
    coupon 
HAVING 
    fecha = '2016-07' 
GROUP BY 
    partner_id 
+0

falsche Verwendung von 'HAVING' und gefunden Syntaxfehler zu. Versuchen Sie dies: SELECT \t *, \t COUNT (*) AS Insgesamt DATE_FORMAT ('consume_time', '% Y-% m') AS fecha VON \t Coupon WHERE \t DATE_FORMAT (' consume_time', '% Y-% m ') =' 2016-07 ' GROUP BY 'partner_id'' – 1000111

+0

Gibt es einen Fehler, den Sie bekommen? was ist das Problem? es gibt Fehler? Daten werden nicht zurückgegeben? Korrekte Daten werden nicht zurückgegeben? –

+0

Sorry, es gibt mir unbekannte Spalte fecha in WHERE-Klausel –

Antwort

0
  1. Sie ein , in der Auswahlliste enthalten ist, zwischen AS total und FROM_UNIXTIME.

  2. HAVING Filter-Sets, während WHERE Filter Datensätze gruppiert, bevor sie in gruppiert diesem Fall werden Sie diese wollen jedoch Aliase wie fecha nicht verfügbar sind, wenn die WHERE Klausel ausgewertet wird. Sie müssen daher den zugrunde liegenden Ausdruck in der WHERE Klausel wiederholen:

    WHERE FROM_UNIXTIME(consume_time,'%Y-%m') = '2016-07' 
    

    Doch dieser Ansatz nicht sargable-besser wäre Ihre wörtlichen auf einen Bereich zu konvertieren, auf dem consume_time direkt (insbesondere gefiltert werden, wenn die Tabelle ein Index darauf):

    WHERE consume_time >= UNIX_TIMESTAMP('2016-07-01') 
        AND consume_time < UNIX_TIMESTAMP('2016-08-01') 
    

    noch besser noch consume_time als zeitlicher Datentyp zu speichern, die MySQL versteht, zB TIMESTAMP (die intern als Unix-Zeitstempel gespeichert werden geschieht), sondern als eine bloße ganzzahligen dann würden Sie in der Lage sein, mit den Konvertierungsfunktionen zu beseitigen insgesamt:

    WHERE consume_time >= '2016-07-01' 
        AND consume_time < '2016-08-01' 
    
  3. Da Sie durch partner_id Gruppierung sind , sind die Werte in jeder Resultset-Spalte, die nicht funktional davon abhängig sind, unbestimmt. Das ist wahrscheinlich nicht das, was du willst. Wollten Sie wirklich alle Spalten auswählen, aber gruppieren Sie nach partner_id?