Una query per Raggruppare?

di ricmanx il
7 risposte

Ciao, ho una tabella del genere:

idid_nominativoDataPresenza 
3282024-10-10
2252024-10-02
1252024-10-01
4282024-10-01
5262024-10-01

E vorrei mostrare le date in cui e' successo qualcosa, ovvero il 10, il 02 e il 01 di ottobre. Cioe' la stessa data (01/10) non dovrei ripeterla 3 volte ma mostrarla una volta sola. 

Come faccio una query del genere?

7 Risposte

  • 26/10/2024 - ricmanx ha scritto:


    sinceramente non ho capito come raggruppare

    Non devi raggruppare, ma prendere i valori distinti. Pertanto:

    SELECT DISTINCT DataPresenza
    FROM Tabella
  • Con quei dati non puoi raggruppare per data.

    Puoi raggruppare per idnome e max(id)

    Per avere

    25.   02/10/24

    26.   01/10/24

    28.   10/10/24

  • 26/10/2024 - Sgrubak ha scritto:


    Non devi raggruppare, ma prendere i valori distinti. Pertanto:

    SELECT DISTINCT DataPresenza
    FROM Tabella

    Ok, in effetti vedo un raggruppamento per date. 

    Non avevo detto il “poi”… Poi la data sarà scritta in html sottoforma di link (a href) e, una volta cliccata, mostrerò gli utenti presenti quel giorno… 

    Potrebbe essere un problema inviare una data da un href e poi prenderla col $_GET per eseguire l'altra query?  

  • 26/10/2024 - sihsandrea ha scritto:


    Con quei dati non puoi raggruppare per data.

    Puoi raggruppare per idnome e max(id)

    Per avere

    25.   02/10/24

    26.   01/10/24

    28.   10/10/24

    Chiedo scusa per l'ignoranza…. Non ho capito… 

  • Un elenco di lavori svolti puoi raggrupparlo:

    Tabella lavori svolti

    1. Taglio prato
    2. Potatura alberi
    3. Tagio prato
    4. Spargimento concime
    5. Taglio prato

    Query raggruppamento per mansioni

    Taglio prato

    Potatura alberi

    Spargimento concime

    In pratica puoi raggruppare record che hanno campi uguali.

    La tua tabella (id; idnominativo; data;)

    La puoi raggruppare per data solo se pippo è registrato da 2 a n volte per la data del 01/01/24 il che non ha senso.

    Rileggendo ho capito che per raggruppamento intendi filtrare…

    Beh, raggruppare significa ridurre i duplicati nella risposta di una query, filtrare sifnifica dare dei criteri di visualizzazione.

    Nel tuo caso select * form tuatabella

     where data=[tuocriterio]

    26/10/2024 - ricmanx ha scritto:


    E vorrei mostrare le date in cui e' successo qualcosa, ovvero il 10, il 02 e il 01 di ottobre. Cioe' la stessa data (01/10) non dovrei ripeterla 3 volte ma mostrarla una volta sola

    Da dove si evince che è successo qualcosa?

    Magari la tabella registra eventi così organizzati:

    Idevento.   Idnominativo.   Dataevento. 

    In questo caso non hai abbastanza elementi per usare una data ma puoi selezionare l'ultima registarione per nominativo

    Cioè max(id) che è l'ultimo evento registrato e idnominativo

    Quindi avrai in risposta solo i nominativi senza ripetizione e la data dell'evento

Devi accedere o registrarti per scrivere nel forum
7 risposte