Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: query complessa

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    query complessa

    ciao a tutti,

    ho una situazione di questo tipo



    come posso fare una query dove una volta fatto "GROUP BY" prendo di quel record l'ID più alto??

    :master:

    adesso faccio cosi
    codice:
    $query_Recordset1 = sprintf("SELECT * FROM scarico GROUP BY prodotto ORDER BY prodotto", $colname_Recordset1);
    grazie

  2. #2
    con al funzione MAX() di sql che, appunto, ti preleva il valore piu alto
    Il Ticino è biancoblù
    DVDS delegato ufficiale

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    non sò usarla mi faresti un'esempio

  4. #4
    prova con

    Codice PHP:
    $query_Recordset1 sprintf("SELECT * FROM scarico WHERE ID=MAX(ID) GROUP BY prodotto ORDER BY prodotto"$colname_Recordset1); 
    ho semplicemente aggiunto "WHERE ID=MAX(ID)" ovvero ti preleva il dato dove il campo ID è piu alto
    Il Ticino è biancoblù
    DVDS delegato ufficiale

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    c'è un'errore
    codice:
    You have an error in your SQL syntax near '=MAX(ID) GROUP BY prodotto ORDER BY prodotto' at line 1

    questo e il codice
    codice:
    $query_Recordset1 = sprintf("SELECT * FROM scarico ID=MAX(ID) GROUP BY prodotto ORDER BY prodotto", $colname_Recordset1);

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    SELECT MAX(id) AS max, prodotto  FROM scarico
    GROUP BY prodotto
    ORDER BY prodotto



    think simple think ringo

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    scusami stò facendo delle prove ma l'ID più alto di coca cola adesso e il 6 e continua a farmi vedere il 5

    codice:
    $query_Recordset1 = sprintf("SELECT *, MAX(ID) AS max, prodotto  FROM scarico GROUP BY prodotto ORDER BY prodotto", $colname_Recordset1);
    questo è il risultato della query
    codice:
    &totale=1&ID1=5&fornitore1=2&riferimento1=121&prodotto1=COCA COLA&descrizione1=MOLTO BUONA MA UN PO' FRIZZANTE&prezzo1=1&quantita1=20&codice1=BCC353&capacita1=0.75&marca1=COCA COLA&categoria1=Bibite&datacarico1=2005/2/16&idreparto1=5&residuo1=0&scarico1=0&datascarico1=2005/2/16
    :master:

  8. #8
    Il distinct ed il group by ti rendono il primo record che soddisfa l'unicita' della richiesta che sara' il primo record che trova nello scorrere la tabella. se vuoi un record specifico devi sfruttare HAVING sempre che ci siano dei campi che lo permettano.

    Altrimenti se devi recuperare l'id piu' alto fai una tabella temporanea ordinata su id DESC ed esegui la selezione su quella. Comunque sia personalmente non approvo l'uso dello sprintf per costruire una variabile query. Assolutamente superfluo.

    Un esempio con la tab temporanea:
    codice:
    CREATE TEMPORARY TABLE tab_tmp
    SELECT * FROM scarico
    ORDER BY id DESC;
    
    SELECT * FROM tab_tmp
    group by prodotto;
    In pratica riordini la tabella secondo il tuo bisogno e poi ci fai la query di selezione.

    Se la provi con phpmyadmin le due query devono essere eseguite con lo stesso comando, cioe' appiccichi le query una dietro l'altra contemporaneamente. Se da php devono essere due sempre una a seguire subito l'altra.



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    scusami ma non riesco a capire non sono molto brava (ma sto imparando!!)

    guarda il mio codice
    codice:
    <?php
    echo '
    
    ';
    require_once('../Connections/connessione.php');
    
    $colname_Recordset1 = "1";
    
    mysql_select_db($database_connessione, $connessione);
    $query_Recordset1 = sprintf("SELECT *,  MAX(ID) AS max, prodotto  FROM scarico GROUP BY prodotto ORDER BY prodotto", $colname_Recordset1);
    $Recordset1 = mysql_query($query_Recordset1, $connessione) or die(mysql_error());
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
    $x = 0;
    echo "&totale=", $totalRows_Recordset1;
    while($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {
        $ID = $row_Recordset1['ID'];
        $riferimento = $row_Recordset1['riferimento'];
        $fornitore = $row_Recordset1['fornitore'];
        $prodotto = $row_Recordset1['prodotto'];
        $descrizione = $row_Recordset1['descrizione'];
        $prezzo = $row_Recordset1['prezzo'];
        $quantita = $row_Recordset1['quantita'];
        $codice = $row_Recordset1['codice'];
        $marca = $row_Recordset1['marca'];
        $capacita = $row_Recordset1['capacita'];
        $categoria = $row_Recordset1['categoria'];
        $datacarico = $row_Recordset1['datacarico'];
        $idreparto = $row_Recordset1['idreparto'];
        $residuo = $row_Recordset1['residuo'];
        $scarico = $row_Recordset1['scarico'];
        $datascarico = $row_Recordset1['datascarico'];
        $x++;
        echo "&ID$x=$ID&fornitore$x=$fornitore&riferimento$x=$riferimento&prodotto$x=$prodotto&descrizione$x=$descrizione&prezzo$x=$prezzo&quantita$x=$quantita&codice$x=$codice&capacita$x=$capacita&marca$x=$marca&categoria$x=$categoria&datacarico$x=$datacarico&idreparto$x=$idreparto&residuo$x=$residuo&scarico$x=$scarico&datascarico$x=$datascarico";
    }
    mysql_free_result($Recordset1);
    ?>
    vorrei che del prodotto ROSSELLA ne uscisse dalla query quello con l'ID più alto quindi il 3 e poi il prodotto TEST ched in questo caso e solo (altrimenti anche di quello dovrebbe restituire quello con l'ID più alto)



    :master:

  10. #10
    Che faccio. quoto la mia risposta o ti invito a rileggerla? Mi pare scritta in modo abbastanza chiaro.

    Poi quando hai tempo spiegami che fa lo sprintf nel contesto della tua query.....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.