CLASSIFICA

di il
10 risposte

CLASSIFICA

Buongiorno a tutti, sono nuovo di questo forum e premetto che di programmazione non sò molto; mi aiuto con dei libri e con i forum su internet.
Volevo chiedere il vostro aiuto perchè non riesco a visualizzare la classifica di partenza in un database scacchistico. Cioè vorrei vedere la classifica di partenza del torneo con tutti i dati a zero, p.es. POSIZIONE=1;GIOCATORE= Rossi Paolo; GIOCATE =0; VINTE=0; PAREGGI=0; SCONFITTE=0;PUNTI=0; e così via per il numero dei giocatori.
Se invece inserisco il risultato di una partita allora nella mia classifica vedo solo i nomi dei due giocatori che hanno finito la partita con i dati corretti.
Spero mi possiate aiutare. Grazie.
Serafino.

10 Risposte

  • Re: CLASSIFICA

    Ma parliamo di qualcosa da impostare da zero o di un tuo progetto da completare/migliorare?
  • Re: CLASSIFICA

    Ciao oregon,
    è una miglioria; ho già le tabelle e le query che mi servono per stilare la classifica che in effetti funziona tutto man mano che io inserisco un risultato, quello che vorrei vedere io è la classifica vuota ad inizio del torneo mentre ora io vedo l'intestazione della maschera "CLASSIFICA" senza nemmeno un nome.
    Ciao. Grazie.
  • Re: CLASSIFICA

    Se non ci dici dettagliatamente tutte le tue tabelle, tutti i campi, le chiavi primarie, da quali campi sono composte le tue query ecc...non possiamo sapere da dove dobbiamo cominciare.
  • Re: CLASSIFICA

    Ciao Osvaldo, hai ragione, in questo database che cerco di creare ho una maschera "PARTITE" nella quale inserisco le giornate con le varie partite, a fianco di ogni partita ho una casella di controllo "Partita finita?" che quando la partita è terminata la spunto. Questi dati finiscono nella tabella "INCONTRI" nella quale ho i seguenti campi: IDincontro; giornata; partita_numero; Giocatore A; Giocatore B; DinP; DfinP; Risultato A; Risultato B; Partita_finita_?; D_ultimo_agg; questi dati finiscono in queste query : "QryPareggioA"; "QryPareggioB"; QryVincenti"; "QryPerdenti"; "QryRisultati"; "QryTabellaPunteggiTotali"; quindi ho una query di unione "TabellaPunteggi" che mi unisce in SQL i dati della "QryRisultati"; (questa non è tutta farina del mio sacco, come si suol dire, ho avuto molti aiuti da questi Forum). Qui stà il problema: ho la maschera "CLASSIFICA GENERALE" dove vedo la classifica solo se ho qualche partita terminata (vedo i nomi dei due giocatori che hanno terminato la partita con i punti relativi), se invece sono ad inizio del torneo con tutti i giocatori a 0 punti nella maschera vedo solo l'intestazione con il titolo della maschera. Io vorrei che ad inizio torneo nella maschera "CLASSIFICA GENERALE" mi apparissero tutti i nomi dei giocatori con i 0 punti. (Come la classica classifica di inizio campionato di calcio). Spero di aver spiegato bene altrimenti ti posso scrivere tutte le tabelle, le maschere e le query che ho nel mio database.
    Ciao e grazie.
  • Re: CLASSIFICA

    Ciao Osvaldo ecco in dettaglio il mio database.
    Ho una tabella "tblINCONTRI" nella quale ho i seguenti campi: IDincontro;giornata;Pnumero;GiocatoreA;GiocatoreB;DinP1;DfinP1;RisultatoA;RisultatoB;DataUltimoAggiornamento;PartitaFinita?(Casella di controllo); questa tabella prende i dati dalla mia maschera "MscINCONTRI".
    Poi ho le seguenti Query per calcolare i punti.
    1. "QryRisultati" che contiene i campi: giornata - Pnumero - GiocatoreA - GiocatoreB - DinP1 -DfinP1 - RisultatoA - RisultatoB - Partita finita? - Vincitori:IIF([Partita finita ?]=0;"";IIF([RisultatoA]=[RisultatoB];"";IIF([RisultatoA]>[RisultatoB];[GiocatoreA];[GiocatoreB]))) - Perdenti:IIF([Partita finita ?]=0;"";IIF([RisultatoA]=[RisultatoB];"";IIF([RisultatoA]<[RisultatoB];[GiocatoreA];[GiocatoreB]))) -
    PareggioA:IIF([Partita finita ?]=0;"";IIF[RisultatoA]=[RisultatoB];[GiocatoreA])) - PareggioB: IIF([Partita finita ?]=0;"";IIF([RisultatoA]=[RisultatoB];[GiocatoreB] - PuntiA: IIF([RisultatoA]=[RisultatoB];"0,5";IIF([RisultatoA]>[RisultatoB];1;0)) - PuntiB: IIF([RisultatoB]=[RisultatoA];"0,5";IIF([RisultatoB]>[RisultatoA];1;0)) - Esito: IIF([Partita finita ?]=0;"N";IIF([RisultatoA]=[RisultatoB];"P";IIF([RisultatoA]>[RisultatoB];"A";"B"))).
    Poi ho una query di unione "TabellaPunteggi" che mi calcola i punteggi (scritta in SQL).
    Infine una query "TabellaPunteggiTotali" che riceve i dati dalla query "TabellaPunteggi" e che poi mi manda i dati alla mia maschera "Classifica generale".
    Scusa se mi sono dilungato.
    Ciao.
  • Re: CLASSIFICA

    Miei problemi vari:
    1. Hai scritto tutto appiccicato e personalmente faccio fatica a leggere/capire tutto il contesto.
    2. Qualcosa mi dice che la tua tabella Incontri non sia normalizzata, oppure ci sono dei campi inutili a cui apposite query possono dare risposte.
    3. Problemi campi:
    Giornata: che tipo di campo è (Data/Ora o qualcosaltro...?)
    DinP1: cosa rappresenta?
    DfinP1: cosa rappresenta?
    RisultatoA e Risultato B: cosa significano? A scacchi non c'è solo un vincitore oppure parità?
    Partita finita?: che necessità hai di avere un campo del genere? Se i precedenti campi sono vuoti, automaticamente significa che la partita non è finita e viceversa.
    4. Hai previsto una tabella Giocatori relazionata 2 volte con Incontri?
  • Re: CLASSIFICA

    Ciao Osvaldo, cerco di essere più ordinato.
    Nella tabella "tblINCONTRI" ho i seguenti campi:
    IDincontro; (Contatore)
    giornata; (Casella di testo) 1^ giornata; 2^ giornata; 3^ giornata ecc. ecc.
    Pnumero; (Casella di testo) è il numero della partita
    GiocatoreA; (Casella di testo) è il giocatore col Bianco
    GiocatoreB; (Casella di testo) è il giocatore col Nero
    DinP1; (Data/ora) data di inizio della partita
    DfinP1; (Data/ora) data termine della partita
    RisultatoA; (Casella di testo) Risultato del giocatore col Bianco
    RisultatoB; (Casella di testo) Risultato del giocatore col Nero
    DataUltimoAggiornamento; (Data/ora) mi serve per vedere quando ho fatto l'ultimo inserimento
    PartitaFinita? (SI/NO (Casella di controllo)); mi serve per filtrare le partite finite o no e per calcolare i punteggi.
    maschera"MscINCONTRI".
    Poi ho le seguenti Query per calcolare i punti.

    1. "QryRisultati" che contiene i campi:
    giornata
    - Pnumero
    - GiocatoreA
    - GiocatoreB
    - DinP1
    -DfinP1
    - RisultatoA
    - RisultatoB
    - Partita finita?
    - Vincitori:IIF([Partita finita ?]=0;"";IIF([RisultatoA]=[RisultatoB];"";IIF([RisultatoA]>[RisultatoB];[GiocatoreA];[GiocatoreB])))
    - Perdenti:IIF([Partita finita ?]=0;"";IIF([RisultatoA]=[RisultatoB];"";IIF([RisultatoA]<[RisultatoB];[GiocatoreA];[GiocatoreB])))
    - PareggioA: IIF([Partita finita ?]=0;"";IIF[RisultatoA]=[RisultatoB];[GiocatoreA]))
    - PareggioB: IIF([Partita finita ?]=0;"";IIF([RisultatoA]=[RisultatoB];[GiocatoreB]
    - PuntiA: IIF([RisultatoA]=[RisultatoB];"0,5";IIF([RisultatoA]>[RisultatoB];1;0))
    - PuntiB: IIF([RisultatoB]=[RisultatoA];"0,5";IIF([RisultatoB]>[RisultatoA];1;0))
    - Esito: IIF([Partita finita ?]=0;"N";IIF([RisultatoA]=[RisultatoB];"P";IIF([RisultatoA]>[RisultatoB];"A";"B"))).

    Poi ho una query di unione "TabellaPunteggi" che mi calcola i punteggi (scritta in SQL).
    SELECT Pnumero as Numero, vincitori as Giocatori, iif(esito="a",puntiA,PuntiB) as Punti, 1 as Giocate, 1 as Vinte, 0 as Pareggi, 0 as Sconfitte
    from QryRisultati
    Where esito<>"P"
    union
    SELECT Pnumero as Numero, perdenti as Giocatori, iif(esito="a",puntib,Puntia) as Punti, 1 as Giocate, 0 as Vinte, 0 as Pareggi, 1 as Sconfitte
    from QryRisultati
    Where esito<>"P"
    union
    SELECT Pnumero as Numero, pareggioA as Giocatori,puntiA as Punti, 1 as Giocate, 0 as Vinte, 1 as Pareggi, 0 as Sconfitte
    from QryRisultati
    Where esito="P"
    UNION SELECT Pnumero as Numero, pareggioB as Giocatori,puntiB as Punti, 1 as Giocate, 0 as Vinte, 1 as Pareggi, 0 as Sconfitte
    from QryRisultati
    Where esito="P";

    Infine una query "TabellaPunteggiTotali"
    SELECT TabellaPunteggi.Giocatori, Sum(TabellaPunteggi.Punti) AS Tot_Punti, Sum(TabellaPunteggi.Giocate) AS Tot_Giocate, Sum(TabellaPunteggi.Vinte) AS Tot_Vinte, Sum(TabellaPunteggi.Pareggi) AS Totale_Pareggi, Sum(TabellaPunteggi.Sconfitte) AS Tot_Sconfitte
    FROM TabellaPunteggi
    GROUP BY TabellaPunteggi.Giocatori
    HAVING (((Sum(TabellaPunteggi.Punti)) Is Not Null))
    ORDER BY Sum(TabellaPunteggi.Punti) DESC;
    (questa query non è scritta in SQL, te l'ho messa io per descrivertela meglio)
    che riceve i dati dalla query "TabellaPunteggi" e che poi mi manda i dati alla mia maschera "Classifica generale".
    Qualcosa sicuramente è migliorabile ma con gli aiuti da parte di persone come te e le mie poche capacità sono riuscito ad ottenere questo. (e per me è già molto).
    Scusa se mi sono dilungato.
    Ciao.
  • Re: CLASSIFICA

    serafino ha scritto:


    Nella tabella "tblINCONTRI" ho i seguenti campi:
    IDincontro; (Contatore)
    giornata; (Casella di testo) 1^ giornata; 2^ giornata; 3^ giornata ecc. ecc.
    Pnumero; (Casella di testo) è il numero della partita
    GiocatoreA; (Casella di testo) è il giocatore col Bianco
    GiocatoreB; (Casella di testo) è il giocatore col Nero
    DinP1; (Data/ora) data di inizio della partita
    DfinP1; (Data/ora) data termine della partita
    RisultatoA; (Casella di testo) Risultato del giocatore col Bianco
    RisultatoB; (Casella di testo) Risultato del giocatore col Nero
    DataUltimoAggiornamento; (Data/ora) mi serve per vedere quando ho fatto l'ultimo inserimento
    PartitaFinita? (SI/NO (Casella di controllo)); mi serve per filtrare le partite finite o no e per calcolare i punteggi.
    maschera"MscINCONTRI".
    Io continuo ad avere difficoltà di interpretazione di questa tabella. Mi serve una spiegazione tecnica del mondo degli scacchi.
    Cosa si intende per Partita e/o Incontro? Un insieme di manches?
    Giovanni e Nicola si incontrano in data 10/10/2015 alle ore 15:00. Il TimeFine è dato dalla vittoria di uno dei due? Quando si va in stallo (parità) chi lo decide: arbitro o giocatori?
  • Re: CLASSIFICA

    Ciao Osvaldo,
    la partita od incontro si riferisce ad una singola partita ( es. Giovanni (bianco) - Nicola (nero);
    il time fine è dato dalla fine della partita in base al risultato, che sia la vittoria di Giovanni, di Nicola oppure in caso di parità.
    La parita può essere forzata (in caso di stallo) oppure decisa dall'arbitro.
    Ciao.
  • Re: CLASSIFICA

    ' così difficile fare una classifica come quella della serie A di calcio?
Devi accedere o registrarti per scrivere nel forum
10 risposte