Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    estrarre il record con il valore più piccolo tra i doppioni

    Buonasera a tutti,
    Ho una tabella formata da tre campi, giorno_appuntamento, ora_inizio, durata
    Nella tabella posso avere più record con i campi uguali (giorno_appunatemtno e ora_inizio) ma con il campo durata differente.
    Per estrarre i record che hanno campi uguali (giorno_appunatemtno e ora_inizio) faccio son la seguente query

    Codice PHP:
    SELECT giorno_appora_inizio,duratacount(*) AS conteggio
    FROM appuntamento
    GROUP BY giorno_app
    ora_inizio 
    HAVING count
    (*) > 
    Però non riesco a fare una query dove mi estrapola solo i record doppioni e con il campo "durata" più piccolo


  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova così
    codice:
    SELECT giorno_app, ora_inizio,durata, count(*) AS conteggio, MIN(durata) as minimo
    FROM appuntamento
    GROUP BY giorno_app, ora_inizio 
    HAVING conteggio > 1
    PS: sarebbe da postare in Database

  3. #3
    Buongiorno,
    ho provato direttamente dal Database ed è una query funzionante, però sicuramente mi sono spiegato male io, cioè io vorrei solo i record uguali e con il campo durata minore. Se alla query che hai postato aggiungo il campo id_appuntamento
    Codice PHP:
    SELECT id_appuntamentogiorno_appora_inizio,duratacount(*) AS conteggioMIN(durata) as minimo
    FROM appuntamento
    GROUP BY giorno_app
    ora_inizio 
    HAVING conteggio 

    non ottengo gli id_appuntamenti che realmente sono doppioni e con durata minima

  4. #4
    Ho provato a fare una query del genere
    PHP]SELECT id_appuntamento FROM appuntamento
    WHERE giorno_app IN (select giorno_app from appuntamento group by giorno_app, ora_inizio having count(ora_inizio) > 1)
    AND ora_inizio IN (select ora_inizio from appuntamento group by giorno_app, ora_inizio having count(ora_inizio) > 1);[\PHP]

    in questo modo ottengo tutti i record con data_inizio e ora_inizio uguale, adesso però dovrei aggiungere la parte che prende solo i record con il campo "durata" più piccolo

  5. #5
    ho fatto in questo modo e sembra funzionare:
    [php]SELECT id_appuntamento, durata_app_num FROM appuntamento
    WHERE giorno_app IN (select giorno_app from appuntamento group by giorno_app, ora_inizio having count(ora_inizio) > 1)
    AND ora_inizio IN (select ora_inizio from appuntamento group by giorno_app, ora_inizio having count(ora_inizio) > 1)
    AND durata IN (select MIN(durata) as min from appuntamento);
    [\php]

    E' corretta?

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.