Un count che non funziona

di il
1 risposte

Un count che non funziona

Buongiorno a tutti,
ho un problema che non riesco a risolvere.
Ho le seguenti tabelle:

STAGIONI id
PARTITE id, stagione
PRESENZE id_partita, id_calciatore
CALCIATORI id, nome, cognome

ora, le tabelle sono correlate tra loro in modo piuttosto semplice:
stagioni.id = partite.stagione
presenze.id_partita = p.id
presenze.id_calciatore = calciatori.id

Ora io vorrei una query che mi restituisse dato il calciatore, per esempio id=123, in quante stagioni ha giocato.
SELECT count(s.id) FROM partite p, presenze z, stagioni s, calciatori c WHERE s.id=p.stagione AND z.id_partita=p.id AND c.id=123 AND c.id=z.id_calciatore
Ma in questo modo anzichè restituirmi 3 (le stagioni in cui il calciatore ha giocato), mi restituisce 88 (il numero di partite che ha disputato).

Aiutatemi per piacere!

1 Risposte

  • Re: Un count che non funziona

    Direi di provare così:
    
    SELECT count(DISTINCT s.id) FROM partite p, presenze z, stagioni s, calciatori c WHERE s.id=p.stagione AND z.id_partita=p.id AND c.id=123 AND c.id=z.id_calciatore
    
    O, meglio
    
    SELECT count(DISTINCT s.id)
    FROM partite p,
         INNER JOIN presenze z ON p.id = z.id_partita
         INNER JOIN stagioni s ON p.stagione = s.id
         INNER JOIN calciatori c ON p.id_calciatore = c.id
    WHERE c.id=123
    
Devi accedere o registrarti per scrivere nel forum
1 risposte