Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    estrarre il prezzo più basso tra 2 o più per lo stesso id

    ciao a tutti
    ho questo scenario:

    mi trovo con le offerte di piu' alberghi, ognuno di essi ha un id_hotel
    ora sto estraendo le offerte e devo mostrarle dopo il risultato di una ricerca.

    Vorrei fare in modo da mostrare solo 1 prezzo per albergo e non piu' prezzi e deve essere il piu' basso.

    in pratica ho delle offerte giornaliere per esempio da 60 euro che sarebbero 420 settimanali, pero' ho anche un'offerta da 350 euro settimanali, io dovrei estrarre solo questa perche' è la più bassa.

    Che clausola devo aggiungere alla query?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    tra i vari campi ho questi:

    id_hotel: indica l'id dell'hotel
    prezzo (float): indica il prezzo del pacchetto
    prezzo_come(int): indica se il prezzo e' giornaliero, per 2 notti, per 3 notti, per 7 notti

    Facendo la query, attualmente, tiro fuori sia il prezzo dove in prezzo_come ho indicato 1 (prezzo giornaliero) che 7 (prezzo settimanale), ora devo estrarre quello piu' basso tra i 2

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non ha niente a che fare con PHP, è un problema di query, quindi MySQL, quindi database.

    E' la seconda volta che ti riprendo, per favore fa attenzione a dove posti.

    Ti sposto.

  4. #4
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ops, scusami, credevo che visto che faceva parte del codice php ero nella sezione giusta, ma pensandoci bene è una query a mysql quindi dovevo postare in "database"
    chiedo scusa

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    mmm mi sa di no.

    supponiamo che per lo stesso hotel ho 3 prezzi inseriti

    50 euro
    60 euro
    70 euro

    la query deve tirarmi fuori solo il 50

    Come dovrei utilizzare l'a query con l'if?
    L'id_hotel lo tiro fuori tranquillamente e ci associo anche le 3 tariffe, l'unico problema è estrarre quella piu' bassa

  6. #6
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    quindi qualcosa tipo select min(prezzo) as prezzo_minimo
    ??

  7. #7

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    Quote Originariamente inviata da allin81 Visualizza il messaggio
    prezzo (float): indica il prezzo del pacchetto
    DECIMAL. Float va bene solo per statistiche e alcuni calcoli scientifici. Se hai un prezzo 50.00, non vuoi che diventi 49,99

  9. #9
    Se vuoi fare dei confronti, quantomeno devi prima normalizzare i dat, altrimenti ti trovi a fare confronti assurdi. Confronti le mele con le pere ? non ha senso.
    Il problema non è complesso, ti do' una traccia di algoritmo che può risolvere il problema:
    1. Fai la query e estrai tutti i prezzi relativi all'hotel scelto
    2. Inserisci tutto in un array
    3. Normalizzi i dati relativi al prezzo, ovvero:
      1. Se il prezzo di quella riga è giornaliero lo lasci stare
      2. se il prezzo di quella riga è settimanale lo dividi per i 7 giorni in modo da conoscere il prezzo giornaliero e così via.. ( se il prezzo è per 3 gg dividi per 3)

    4. Cerca nell'array il prezzo giornaliero più basso che hai determinato e avrai trovato l'offerta più conveniente.
    5. Mostra l'offerta nella sua interezza ovvero se è giornaliera, settimanale etc con il suo prezzo totale.


    Forse si potrebbe fare tutto a livello di mysql con una query molto ben strutturata (non la solita banale select). Oppure puoi farlo in php o qualsiasi altro linguaggio tu usi. Il mio esempio è riferito ad un linguaggio di programmazione.

  10. #10
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    si in effetti è quello che già faccio, seleziono solo i prezzi di 1 e 7 giorni (che poi divido) e le ordino, cosi:
    Codice PHP:
    where id_albergo=\"$id_hotel\" and valida_fino >= CURDATE() and cancellata=\"0\" and prezzo_come IN(1, 7) order by valida_da asc 
    in pratica dico:
    dove l'id dell'hotel ad esempio è 1, la scadenza (valida_fino) è maggiore o uguale a ora, non è cancellata ed il prezzo deve essere giornaliero (1) o settimanale (7) ordinando per data di inizio offerta

    ora non devo fare altro che tra 2,3,4,20 prezzi visualizzare solo quello piu' basso

    in un'altra pagina faccio cosi:
    nel while ci metto
    Codice PHP:
    $prezzo_come $riga_offerte['prezzo_come'];$prezzo_da_mostrare = ($prezzo/$prezzo_come);$prezzo_da_mostrare number_format($prezzo_da_mostrare2','' ');$prezzo_da_mostrare str_replace(",",".",$prezzo_da_mostrare); 
    e sembra funzionare, devo capire se riesco ad adattarlo a quello che mi serve

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.