最终代码:
$querySelect = "SELECT A.IdCliente, A.Data, A.IdPontos
FROM $tabela AS A INNER JOIN ( SELECT MAX(IdPontos) [ID]
FROM $tabela
WHERE IdCliente = $cliente2 AND IdPontos = $voucher )
AS B ON B.ID = A.IdPontos
";
$resultSelect = mssql_query($querySelect) or die('Erros querying MSSQL SELECT');
//Show result
while ( $record = mssql_fetch_array($resultSelect) )
{
echo $record["IdCliente"] . ' - Código do Cliente<br />';
echo $record["IdPontos"] . ' - Número do voucher do cliente<br />';
}
我试图在表格中显示最新的记录(行),直到现在,我才能获得特定用户的所有记录。我使用了MAX()函数,但是出现了错误:
警告:mssql_query()[function.mssql-query]:message:Column&#39; Clt_cadPontosFidelidade.IdCliente&#39;在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 (严重程度16)在第36行的/home/storage/c/60/21/allantoledo/public_html/NovoApp/resgatar.php中
我的代码:
$querySelect = "SELECT
IdCliente, Data, MAX(IdPontos)
FROM $tabela
WHERE IdCliente = $cliente2
AND IdPontos = $voucher
";
而且我没有显示我的阵列的值,它们没有出现。
代码:
$resultSelect = mssql_query($querySelect) or die('Erros querying MSSQL SELECT');
//Show result
while ( $record = mssql_fetch_array($resultSelect) )
{
echo $resultSelect["IdCliente"] . ' - Código do Cliente<br />';
echo $resultSelect["IdPontos"] . ' - Número do voucher do cliente<br />';
}
谢谢!
答案 0 :(得分:1)
使用order by
和top 1
:
SELECT TOP 1 a.*
FROM $tabela a
WHERE a.IdCliente = $cliente2 AND a.IdPontos = $voucher
ORDER BY IdPontos DESC;
我觉得很奇怪你只有IdPontos
的一个值。也许还有另一个领域确定&#34;最后一行&#34;。
答案 1 :(得分:1)
如果使用没有group by的聚合函数,则假定它适用于所有行。因为您已添加了IdCliente和Data列,所以需要一个分组:
SELECT IdCliente, Data, MAX(IdPontos)
FROM $tabela
WHERE IdCliente = $cliente2
AND IdPontos = $voucher
GROUP BY IdCliente, Data
但这会显示超出您需要的行数。所以你可以加入IdPontos获取这些,或者按照建议使用TOP 1。