Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    11

    Aiuto su query complicata

    Salve ragazzi, devo fare una query ma non so come, vi spiego il problema. Ho 2 tabelle:

    girone(nome, torneo, ..altri campi secondari)

    classifica(giocatore,torneo,girone, punti)

    vorrei formulare una query che mi restituisse tutti i gironi di un torneo specificato in cui ci sono almeno 3 giocatori. Tutto questo ottenuto possibilmente con una sola query, qualcuno sa aiutarmi? O_o grazie!

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Non è chiara la domanda,

    Innanzitutto quale DB usi ?
    poi spiegaci la differenaza fra girone è torneo ?
    poi dicci quali sono le Key delle 2 tabelle ?
    e le relazioni fra le tabelle ?


    ho la sensazione che hai dei problemi sulla impostazione delle tabelle


    .

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    11
    Uso mssql ma vorrei utilizzare l'sql standard, senza statement specifici di sql server.

    Un torneo e' formato da 1 o piu' gironi.

    Torneo(nome, ...altri campi secondari) pk(nome)
    Girone(nome, torneo, ... altri campi secondari) pk(nome,torneo) fk(torneo verso torneo(nome))
    Classifica(giocatore, torneo, girone, punti) pk(giocatore, torneo) fk(torneo e girone verso le chiavi delle tabelle omonime)


    un giocatore appartiene ad un torneo e un girone (relazione espressa tramite la tabella classifica)

    Grazie

  4. #4
    Non mi pare si cosi complicato...
    codice:
    SELECT *
    FROM CLASSIFICA C
    WHERE C.TORNEO = 'TORNEO 1'
    GROUP BY GIRONE
    HAVING COUNT(GIOCATORE) >= 3;
    Basta appunto raggruppare i dati e farsi restituire i risultati che hanno più righe per giocatore.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    11
    Grazie per il tuo aiuto ma non sembra funzionare.

    Questo è il contenuto della tabella classifica:

    giocatore torneo girone punti
    ciccio torneoprova rosso NULL
    pippo torneoprova rosso NULL
    pluto torneoprova rosso NULL

    lanciando questa query:

    SELECT * FROM classifica AS C WHERE C.TORNEO='torneoprova' GROUP BY GIRONE HAVING COUNT(GIOCATORE)>=3;

    mi da il seguente messaggio di errore:

    Msg 8120, Livello 16, Stato 1, Numero Riga 1
    Column classifica.giocatore' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


    sto sbagliando qualcosa io?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    11
    trovato l'errore, bisogna mettere SELECT GIRONE invece che SELECT *.

    Grazie mille dell'aiuto, il mio sql è molto arruginito

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.