簡體   English   中英

PHP / MySQL在WHERE / AND子句中獲得最大日期

[英]PHP/MySQL get max date in a clause WHERE/AND

我正在我的Web應用程序中嘗試此操作:

$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']."'";

我直接在phpMyAdmin中測試了查詢,如下所示:

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

但是,出現以下錯誤:

#1111-無效使用組功能

我知道這是因為行

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

但我不知道該如何解決。 我該如何解決?

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'

看來您可以利用HAVING

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';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM