Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    problema query mysql ripetizione campi uguali

    ciao a tutti

    ho un problema probabilmente banale

    supponiamo di avere una tabella formata da:

    nometifoso varchar
    squadra varchar

    che comprende un elenco di tifosi, e le squadre che tifano
    vorrei ottenere un elenco delle squadre tifate, non so come evitare la ripetizione di una squadra se tifata da più persone nella prima tabella.
    come devo impostare la query?

    grazie a tutti
    ciao
    Luca

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    si chiamano relazioni molti a molti.

    Innanzitutto devi impostare la struttura del db correttamente.

    tabella squadre
    (attributi)

    tabella tifosi
    (attributi)

    poi fai la tabella

    tabella tifosi_squadre
    (
    id_tifoso
    id_squadra
    )

    Et voila la relazione molti a molti e' completa cosi' potrai caricare tutto quello che ti pare.

  3. #3
    Oppure usi la clausola DISTINCT nella select:

    SELECT DISTINCT squadra FROM tabella

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    35
    SELECT squadra,count(*) as conteggio FROM `calcio` GROUP BY squadra

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Si e la normalizzazione va a farsi benedire.

    Raga normalizzare un database e' sinceramente la soluzione migliore per ogni necessita'.

    E progettare un database normalizzato vi consentira' di poter modificare e mantenere la coerenza dei dati in molti casi .

  6. #6
    Originariamente inviato da Virus_101
    Si e la normalizzazione va a farsi benedire.

    Raga normalizzare un database e' sinceramente la soluzione migliore per ogni necessita'.

    E progettare un database normalizzato vi consentira' di poter modificare e mantenere la coerenza dei dati in molti casi .
    Perdonami, ma allora se vogliamo essere pignoli, quella che tu proponi NON è la normalizzazione del db, che consisterebbe semplicemente nell'avere un campo id_squadra dentro alla tabella tifosi e una tabella squadre a parte, ma piuttosto stai proponendo la creazione di una tabella ausiliaria che permetta una relazione molti a molti tale per cui ogni tifoso può eserlo di più di una squadra, cosa che non necessariamente è ciò che vuole che ha iniziato il thread...

    Quindi:

    Se è effettivamente giusto il consiglio di creare una tabella squadre e di collegarla alla tabella tifosi, non necessariamente è necessaria una terza tabella.

    Quindi, sia la proposta mia della distinct che quella della GROUP sono corrette; la GROUP però, se non ti interessa davvero il conteggio che viene fatto, perde tempo appunto a conteggiare, mentre la distinct no.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Scusa ma non e' vero.

    Non si tratta di aggiungere tabelle. SI tratta prorpio di normalizzare la base di dati.
    E se tu avessi letto bene ha chiesto come poter gestire un "elenco di squadre tifate".
    Cio' implica una relazione molti a molti e una normalizzazione della struttura della base di dati.

    A questo punto si puo' anche "pesare" la relazione :

    tabella tifosi_squadre
    id_tifoso
    id_squadra
    peso

    imposti cosi' una scala di valori arbitraria :
    0 => squadra del cuore
    1 => squadra simpatica
    2 => .....

  8. #8
    Originariamente inviato da Virus_101
    Scusa ma non e' vero.

    Non si tratta di aggiungere tabelle. SI tratta prorpio di normalizzare la base di dati.
    E se tu avessi letto bene ha chiesto come poter gestire un "elenco di squadre tifate".
    Cio' implica una relazione molti a molti e una normalizzazione della struttura della base di dati.

    A questo punto si puo' anche "pesare" la relazione :

    tabella tifosi_squadre
    id_tifoso
    id_squadra
    peso

    imposti cosi' una scala di valori arbitraria :
    0 => squadra del cuore
    1 => squadra simpatica
    2 => .....
    No, sei tu che dai una interpretazione diversa da quella più semplice possibile: "elenco di squadre tifate" significa l'elenco delle squadre per cui esiste almeno un tifoso, e non ha NESSUNA implicazione di relazione molti a molti...

    Ma se vuoi restare convinto della tua posizione, fà pure...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    35
    Originariamente inviato da Virus_101
    Scusa ma non e' vero.

    Non si tratta di aggiungere tabelle. SI tratta prorpio di normalizzare la base di dati.
    E se tu avessi letto bene ha chiesto come poter gestire un "elenco di squadre tifate".
    Cio' implica una relazione molti a molti e una normalizzazione della struttura della base di dati.

    A questo punto si puo' anche "pesare" la relazione :

    tabella tifosi_squadre
    id_tifoso
    id_squadra
    peso

    imposti cosi' una scala di valori arbitraria :
    0 => squadra del cuore
    1 => squadra simpatica
    2 => .....
    Perdonami ma sei tu che sei andato oltre, l'utente ha fatto una richiesta specifica
    come devo impostare la query?
    non ha chiesto come si struttura la base dati.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Shores
    No, sei tu che dai una interpretazione diversa da quella più semplice possibile: "elenco di squadre tifate" significa l'elenco delle squadre per cui esiste almeno un tifoso, e non ha NESSUNA implicazione di relazione molti a molti...

    Ma se vuoi restare convinto della tua posizione, fà pure...
    Anche se OT, in effetti non si capisce bene un particolare.
    Se lo stesso tifoso puo' tifare piu' squadre diverse. In quest'ultimo caso a ragione Virus, altrimenti Shores.

    Per il resto, avrei usato una Group By piuttosto che una distinct.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.