2016-05-27 14 views
1

Ich versuche, dies in meinem Web-Anwendung:PHP/MySQL max Datum in einer Klausel bekommen WO/AND

$data = date("Y-m-d", strtotime("-15 days", strtotime(date("Y-m-d")))); 

$sql = "SELECT DISTINCT(Cliente.idCliente), Cliente.nomeCliente, Cliente.email, Cliente.cpf 
     FROM Cliente, Pontuacao 
     WHERE Cliente.idCliente = Pontuacao.idCliente 
     AND DATE_FORMAT(MAX(Pontuacao.timestampPontuacao), '%Y-%m-%d')='".$data."' 
     AND Cliente.receberMensagens=1 
     AND Cliente.numEstabelecimento='".$reg['numEstabelecimento']."'"; 

ich die Abfrage direkt in phpMyAdmin getestet, wie folgt aus:

SELECT DISTINCT(Cliente.idCliente), Cliente.nomeCliente, Cliente.email, Cliente.cpf 
FROM Cliente, Pontuacao 
WHERE Cliente.idCliente = Pontuacao.idCliente 
AND DATE_FORMAT(MAX(Pontuacao.timestampPontuacao), '%Y-%m-%d')='2016-03-28' 
AND Cliente.receberMensagens=1 
AND Cliente.numEstabelecimento=2 

Allerdings bin ich die folgende Fehlermeldung erhalten:

#1111 - Invalid use of group function

ich weiß, dass dies geschieht, weil die Leitung

AND DATE_FORMAT(MAX(Pontuacao.timestampPontuacao), '%Y-%m-%d')='2016-03-28' 

aber ich weiß nicht, wie das zu beheben ist. Wie kann ich das beheben?

Antwort

0
SELECT Cliente.idCliente, Cliente.nomeCliente, Cliente.email, Cliente.cpf 
FROM Cliente 
JOIN Pontuacao ON Cliente.idCliente = Pontuacao.idCliente 
WHERE Cliente.receberMensagens=1 
AND Cliente.numEstabelecimento=2 
GROUP BY Cliente.idCliente, Cliente.nomeCliente, Cliente.email, Cliente.cpf 
HAVING DATE_FORMAT(MAX(timestampPontuacao)), '%Y-%m-%d') = '2016-03-28' 
-1

Es sieht so aus, als ob Sie HAVING verwenden könnten.

SELECT 
    DISTINCT(Cliente.idCliente), 
    Cliente.nomeCliente, 
    Cliente.email, 
    Cliente.cpf, 
    DATE_FORMAT(MAX(Pontuacao.timestampPontuacao), '%Y-%m-%d') AS max_date 
FROM Cliente, Pontuacao 
WHERE 
    Cliente.idCliente = Pontuacao.idCliente 
    AND Cliente.receberMensagens=1 
    AND Cliente.numEstabelecimento=2 
HAVING 
    max_date = '2016-03-28'; 
+0

Bitte einen Hinweis, warum Sie nach unten Stimme ... Ich sehe jetzt, da eine weitere sehr ähnliche Antwort, aber da es 1 Minute vor meinen aufgenommen würde ich glaube, es ist sicher ich nicht davon ausgehen, tat sieh das, wenn du meins schreibst. –