Visualizzazione dei risultati da 1 a 9 su 9

Discussione: problema group by

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    155

    problema group by

    buonasera,
    ho un problema credo molto semplice ma che mi sta facendo uscire di testa da stamattina

    Codice PHP:
    SELECT voti.id_immaginiregistrati.cognomeregistrati.nome
    FROM  voti 
    registrati
    WHERE registrati
    .id voti.id_registrati
    AND voti.id_immagini =99
    GROUP BY registrati
    .cognomeregistrati.nome
    ORDER BY  
    `voti`.`id_immaginiASC 
    lanciando questa query ottengo 274 record

    lanciando la stessa query ma con voti.id_immagini = 100 ottengo 274 record

    a rigor di logica lanciando questa query
    Codice PHP:
    SELECT voti.id_immaginiregistrati.cognomeregistrati.nome
    FROM  voti 
    registrati
    WHERE registrati
    .id voti.id_registrati
    AND (voti.id_immagini =99 OR voti.id_immagini 100)
    GROUP BY registrati.cognomeregistrati.nome
    ORDER BY  
    `voti`.`id_immaginiASC 
    dovrei ottenere 548 (274 + 274) ma cosi non succede e ottengo 372
    come mai? dove sbaglio?

    per eliminare gli eventuali doppioni nome e cognome č corretto raggruppamento come ho fatto?

    grazie per l'aiuto

    =^_^=

  2. #2
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    per eliminare gli eventuali doppioni nome e cognome č corretto raggruppamento come ho fatto?
    Per eliminare i doppioni si usa DISTINCT nella select...GROUP BY te li raggruppa solamente...
    Se hai altri 274 record con voto=99, allora č giusto, ma altrimenti no...le due query sono sostanzialmente diverse, quindi č auspicabile che diano risultati diversi...poi non so cosa ci sia nel db, comunque il risultato potrebbe essere esatto...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    155
    Grazie Gab-81. Sostanzialmente all'interno della tabella registrati ci sono i dati anagrafici, mentre nella tabella voti c'č la corrispondenza tra voto dell'immagine e nominativo. Quello che vorrei fare č effettuare il conteggio di tutti quelli che hanno votato ad esempio l'immagine 99 esclusi i doppioni quindi credo che un raggruppamento per nome, cognome sia corretto... vero?

    grazie

  4. #4
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Quello che vorrei fare č effettuare il conteggio di tutti quelli che hanno votato ad esempio l'immagine 99 esclusi i doppioni quindi credo che un raggruppamento per nome, cognome sia corretto... vero?
    Ripeto, DISTINCT č la cosa migliore. La query sarebbe del tipo

    SELECT DISTINCT COUNT(voti.id_immagini, registrati.cognome, registrati.nome)
    FROM voti , registrati
    WHERE registrati.id = voti.id_registrati
    AND voti.id_immagini = 99
    GROUP BY registrati.cognome, registrati.nome
    ORDER BY `voti`.`id_immagini` ASC

    Secondo me dovrebbe andar bene cosė...selezioni senza ripetizioni (DISTINCT) e conti (COUNT) le tuple selezionate dalla query...

    PS Non ricordo bene la sintassi di count, ma dovrebbe essere quella giusta

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    155
    Grazie ancora Gab-81,
    ho fatto delle prove e sia tramite group by che tramite un distinct i risultati sono gli stessi.
    secondo logica se l'immagine 99 e quella 100 hanno ottenuto 548 voti vuole dire che 548 persone univoche hanno fatto questo tipo di votazione. il problema sorge quando cerco di estrapolare tutte le persone univoche che hanno votato la 99 e la foto 100. dovrei ottenere 548 record ma cosė non č... why??? sono disperato

    dov'č che sbaglio????

    grazie

  6. #6
    Tu fai un raggruppamento solo per nome e cognome, quindi anche se specifichi 2 immagini diverse la query raggruppa SOLO per nome e cognome, ciō significa che se una persona vota per entrambe le immagini risulterā comunque conteggiata una volta sola. Se non vuoi che siano raggruppate aggiungi al group by id dell'immagine.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    155
    grandioso AnĒkin... GRAZIE INFINITE

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    155
    ulteriore problema

    ho 3 tabelle

    foto: id_foto, id_anagrafica
    anagrafica: id_anagrafica, nome, cognome,email
    voto: id_voto, id_foto, id_anagrafica

    devo calcolare quanti voti ha preso la foto 1
    quindi effettuo un count dei record nella tabella voto con id_foto = 1
    il problema sorge perché vi sono varie persone che hanno votato varie foto mentre si poteva votare solo una volta come faccio ad eliminarli?

    grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    155
    sto provando a farlo attraverso varie query ma non mi sembra intelligente come metodo... aiutooooooooo

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.