Visualizzazione dei risultati da 1 a 6 su 6

Discussione: raggruppare i record

  1. #1

    raggruppare i record

    ho questa query

    Codice PHP:
    <?php
    $sql 
    "select DATE_FORMAT(data_partenza, '%d/%m/%y') AS data_partenza, hotel, storico from $tabella where data_partenza <= NOW() and storico = 0 order by hotel asc";
    $risultato = @mysql_query($sql,$connessione)
    or die(
    "Impossibile eseguire l'interrogazione.");
    while (
    $riga mysql_fetch_array($risultato)) {
    $data_partenza $riga['data_partenza'];
    $hotel $riga['hotel'];
    $storico $riga['storico'];
    $elenco_hotel .= "<option value=\"$hotel\">$hotel</option>";
    }
    $visualizza_hotel "<select name=\"hotel\">$elenco_hotel</select>";
    ?>
    Tutto questo mi crea un menu a tendina con la lista degli hotel, l'unica cosa e' che si ripete sempre lo stesso hotel per quanti record trova tipo:

    hotel 1
    hotel 1
    hotel 1
    hotel 1
    hotel 2
    hotel 2
    hotel 3

    ecc

    mentre io voglio che esca solo
    hotel 1
    hotel 2
    hotel 3

    Come posso fare?
    non dovrei mettere un group by hotel da qualche parte?
    Mai dire Mai

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    cosa contiene $tabella?

    Se sono 2 tabelle devi mettere un campo di collegamento...

    Cosi non si capisce, prova a postare la query risultante.

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    30
    C'è un errore logico.
    Nel tuo codice richiami tutti i record per le partenze, ma poi partendo da questi vuoi mostrare gli hotel. Siccome nei record gli hotel sono una chiave ripetuta per ogni istanza di quella che suppongo sia una prenotazione, la ripetizione è inevitabile. Puoi utilizzare la funzione SQL group by per mostrare una sola "riga" per ogni istanza ripetuta per la chiave "hotel".
    Codice PHP:
    SELECT hotel FROM $tabella WHERE data_partenza <= NOW() AND storico 0 ORDER by hotel ASC GROUP BY hotel 
    Se invece ti serve proprio quella query... fai un array dove inserisci gli hotel e fai un controllo per verificare se l'option non è stata aggiunta a $elenco_hotel
    Fammi sapere se funziona, spero di esserti stato utile

  4. #4
    si la query mi deve mostrare a quale albergo devo fare l'estratto conto, nel senso che se c'e' qualche cliente che parte oggi (data_partenza) mi deve uscire il nome di quell'albergo nel menu e quindi posso fargli il conto.

    Provando con il group by hotel mi dice: "Impossibile eseguire l'interrogazione" e non capisco il motivo.

    Come dovrei fare sta query?
    Mai dire Mai

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    30
    Non ho idea della ragione per la quale il group by non dovrebbe funzionare... la query è teoricamente giusta, prova a togliere tutti i parametri (lascia solo i campi di selezione e il group by) e vedi se la query fa... poi aggiungi un pezzo alla volta, almeno vedi dove sta il problema... in particolare prova a togliere l'order, non vorrei dire una scemenza ma ora mi è venuto il sospetto che le due creino problemi insieme...

  6. #6
    mi sa che quando si fa il group by non si mette l'order by
    infatti adesso funziona
    grazie per l'aiuto
    Mai dire Mai

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.