Kod końcowy:

$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 />';
}

Próbuję wyświetlić tylko najnowszy rekord (wiersz) w stole, do tej pory mogłem uzyskać tylko wszystkie rekordy konkretnego użytkownika. Użyłem funkcji Max (), ale otrzymałem błąd:

OSTRZEŻENIE: MSSQL_QUERY () [Funkcja (dotkliwość 16) w /home/storage/c/60/21/allantoledo/public_html/novoapp/resgatar.php w linii 36

Mój kod:

$querySelect = "SELECT
            IdCliente, Data, MAX(IdPontos)
            FROM $tabela 
            WHERE IdCliente = $cliente2
            AND IdPontos = $voucher
           ";

I nie mogłem wyświetlić wartości mojej tablicy, nie pojawili się.

Kod:

$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 />';
}

Dziękuję Ci!

0
Állan Fidelis Toledo 15 luty 2017, 17:39

2 odpowiedzi

Najlepsza odpowiedź

Użyj order by i top 1:

SELECT TOP 1 a.*
FROM $tabela a
WHERE a.IdCliente = $cliente2 AND a.IdPontos = $voucher
ORDER BY IdPontos DESC;

Uważam, że jest ciekawy, że masz tylko jedną wartość IdPontos. Być może istnieje inne pole, które określa "ostatni wiersz".

1
Gordon Linoff 15 luty 2017, 14:40

Jeśli używasz funkcji agregującej bez grupy, to zakłada, że jest to dla wszystkich wierszy. Ponieważ dodałeś kolumny idcliente i dane, potrzebujeby grupy przez:

        SELECT IdCliente, Data, MAX(IdPontos)
        FROM $tabela 
        WHERE IdCliente = $cliente2
        AND IdPontos = $voucher
        GROUP BY IdCliente, Data

Ale to pokazało więcej wierszy niż potrzebujesz. Więc możesz dołączyć do IDPontos, aby je dostać lub użyć pierwszej 1 zgodnie z sugestią.

1
Leonidas199x 15 luty 2017, 14:43