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

    Dati duplicati malgrado uso distinct

    Ho una query che sembra funzionare, ma ha il difetto di restituire dati dupplicati.
    Ho utilizzato il DISTINCT sul campo che voglio singolo, ma sembra non avere effetto.
    Il campo è di tipo VARCHAR e non è una chiave.
    Qualcuno sa dirmi se DISTINCT può essere utilizzato su un campo del genere e come mai sembra non avere effetto? Grazie.

  2. #2

    Re: Dati duplicati malgrado uso distinct

    Originariamente inviato da giancarlo75
    Ho una query che sembra funzionare, ma ha il difetto di restituire dati dupplicati.
    Ho utilizzato il DISTINCT sul campo che voglio singolo, ma sembra non avere effetto.
    Il campo è di tipo VARCHAR e non è una chiave.
    Qualcuno sa dirmi se DISTINCT può essere utilizzato su un campo del genere e come mai sembra non avere effetto? Grazie.
    Si, certo può essere usato anche su un VARCHAR.
    Prova con la clausola GROUP BY.

    Saluti!
    --Cosimo
    MAIL: cosimo.g18@gmail.com

  3. #3
    In tal caso non so come funziona, non ho mai usato i gruppi. Mi informo poi vi dico, comunque è strano che distinct non abbia effetto.

    Intanto riporto la query:
    Codice PHP:
    $query="SELECT distinct(cd_tr.traccia), cd_tr.* FROM cd_tracce cd_tr
            INNER JOIN tracce_autori_tracce t_a_t
            ON t_a_t.id_cd_tracce = cd_tr.id
            INNER JOIN autori_tracce au_tr
            ON au_tr.id = t_a_t.id_autori_tracce
            WHERE concat(au_tr.nome,' ',au_tr.cognome) LIKE '%
    $_GET[principale]%' "
    Senza la struttura del database non è che si capisca molto, comunque in sostanza c'è la tabella
    autori_tracce che memorizza nomi e cognomi, la tabella tracce_autori_tracce che collega le tracce agli autori ed infine la tabella cd_tracce che contiene tutti i dati delle tracce, il nome, la durata, il cd di riferimento ecc.. il campo traccia della tabella cd_tracce contiene il nome della traccia, ed è quello che voglio univoco. La variabile $_GET[principale] contiene il nome dell'autore e la query cerca tutte le tracce scritte da quell'autore.

  4. #4
    Ho trovato una risposta, anche se mi soddisfa a metà.
    Praticamente distinct non funzionava perchè agiva su tutti i campi della tabella cd_tracce, perchè nella SELECT selezionavo tutti i campi. Nulla cambia aggiungendo le parentesi, distinct agisce su tutti i campi selezionati.
    Riscrivendo la query così:
    Codice PHP:
    $query="SELECT distinct(cd_tr.traccia) FROM cd_tracce cd_tr
            INNER JOIN tracce_autori_tracce t_a_t
            ON t_a_t.id_cd_tracce = cd_tr.id
            INNER JOIN autori_tracce au_tr
            ON au_tr.id = t_a_t.id_autori_tracce
            WHERE concat(au_tr.nome,' ',au_tr.cognome) LIKE '%
    $_GET[principale]%' "
    ho risolto, perchè seleziono solo il campo "traccia" e quindi distinct agisce solo su quel campo.
    Mi soddisfa a metà perchè se io avessi bisogno di ricavare anche i dati degli altri campi della tabella (non è il mio caso) non saprei come fare.

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da giancarlo75
    se io avessi bisogno di ricavare anche i dati degli altri campi della tabella
    E che senso avrebbe
    Gli altri campi della tabella mica possono avere sempre lo stesso valore no?

  6. #6
    E se avessi fatto

    Codice PHP:
    $query="SELECT cd_tr.* FROM cd_tracce cd_tr
            INNER JOIN tracce_autori_tracce t_a_t
            ON t_a_t.id_cd_tracce = cd_tr.id
            INNER JOIN autori_tracce au_tr
            ON au_tr.id = t_a_t.id_autori_tracce
            WHERE concat(au_tr.nome,' ',au_tr.cognome) LIKE '%
    $_GET[principale]%'
            GROUP BY cd_tr.traccia"

    ti avrebbe soddisfatto a metà ugualmente?
    --Cosimo
    MAIL: cosimo.g18@gmail.com

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.