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

    query che restituisca solo l'ultimo record riferito ad una persona

    ho questa query che seleziona tutti i risultati dalla tabella patient_visits
    patient_visits` LEFT JOIN `patients` as patients1 ON `patients1`.`id`=`patient_visits`.`patient`

    siccome in questa cartella possono essere inseriti pi� campi riferiti ad un solo paziente vorrei che venisse restituito solo l'ultimo in modo d'aver a colpo d'occhio solo l'ultima situazione e non l'intero storico, per fare un esempio

    se ora ho questi risultati


    paziente stato data
    Bruno ok 16/05/16
    Carlo ok 15/05/16
    Bruno malato 15/05/16
    Bruno da rivedere 14/05/16


    vorrei che mi venissero restituiti questi, ovvero solo l'ultimo stato e nascosti i precedenti
    paziente stato data
    Bruno ok 16/05/16
    Carlo ok 15/05/16


    avete per favore qualche consiglio?
    grazie

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    select uno.* from tabella uno, (select paziente,max(data) as ultima from tabella group by paziente) due where uno.paziente=due.paziente and uno.data=due.ultima
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    grazie ma non riesco proprio a farlo funzionare
    Bono

  4. #4
    grazie per la risposta ma non riesco afarlo funzionare :-(
    Bono

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Io la risposta ce l'avrei, ma il forum non me la fa postare

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Non è affatto semplice, e potrei anche averla complicata più del necessario. Così però dovrebbe andare
    codice:
    s*lect pv.patient, p.name, pv.datavisita, stato from patients_visits pv join
    (
        S*LECT patient, max(datavisita) as datavisita FROM `patients_visits` group by patient
    ) as t1
    on pv.patient = t1.patient and pv.datavisita = t1.datavisita
    left join patients p on pv.patient = p.id
    Attenzione che i nomi delle colonne non corrispondono ai tuoi, e anche in patients_visits c'è una s in più

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Inoltre ho dovuto sostituire le due select con s*lect, altrimenti il forum non prendeva il post

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    proviamo anche qui:
    [mod action]
    @luca200: provo ad inserire questo post per vedere se si sblocca il tuo problema di creazione post

    prova ora a scrivere la query correttamente
    [/mod action]

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Non è affatto semplice, e potrei anche averla complicata più del necessario. Così però dovrebbe andare
    codice:
    select pv.patient, p.name, pv.datavisita, stato from patients_visits pv join
    (
        SELECT patient, max(datavisita)as datavisita FROM `patients_visits`groupby patient
    )as t1
    on pv.patient = t1.patient and pv.datavisita = t1.datavisita
    left join patients p on pv.patient = p.id

    Attenzione che i nomi delle colonne non corrispondono ai tuoi, e anche in patients_visits c'è una s in più

  10. #10
    grazie mille, nel frattempo un amico mi ha suggerito questa risposta che funziona

    patient_visits LEFT JOIN patients as patients1 ON patients1.id=patient_visits.patient INNER JOIN (select patient, max(ID) as ID_MAX from patient_visits group by patient) as ultimo_intervento on ultimo_intervento.ID_MAX = patient_visits.ID and ultimo_intervento.patient = patient_visits.patient
    Bono

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.