|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
[SQL] problema su query
ho queste tre tabelle
Codice:
CREATE TABLE atleti
(
id INT AUTO_INCREMENT,
cognome VARCHAR(20) NOT NULL,
nome VARCHAR(20) NOT NULL,
istituto VARCHAR(30) NOT NULL,
nazionalita VARCHAR(20) NOT NULL,
squadra VARCHAR(20) DEFAULT NULL,
PRIMARY KEY(id)
)
CREATE TABLE gare
(
id INT AUTO_INCREMENT,
fase ENUM('scolastica', 'regionale', 'nazionale', 'internazionale') NOT NULL,
sede VARCHAR(30) NOT NULL,
PRIMARY KEY(id)
)
CREATE TABLE risultati
(
id_gara INT NOT NULL,
id_atleta INT NOT NULL,
punteggio INT NOT NULL,
FOREIGN KEY(id_gara) REFERENCES gare(id),
FOREIGN KEY(id_atleta) REFERENCES atleti(id),
PRIMARY KEY(id_gara, id_atleta)
)
ho una query che mi chiede: stampare l'elenco degli atleti raggruppati per squadre per ogni singola fase io la query l'ho fatta così Codice:
SELECT nome, cognome, squadra, fase FROM atleti, gare, risultati WHERE atleti.id=risultati.id_atleta AND gare.id=risultati.id_gara GROUP BY fase Ultima modifica di ndakota : 08-05-2009 alle 12:48. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
risolto sono un babbazzo
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Se non hai da fare un conteggio di qualcosa (Conteggio di persone, di pezzi, somme di importi, etc.), ovvero se non hai da applicare nessuna funzione di gruppo, la clausola GROUP BY non e' da usare nella tua query.
Forse perche' sei stato tratto in inganno dalla richiesta in italiano con la parola "raggruppati". Ma penso che la richiesta sia in realta' da riformularsi correttamente con la parola "ordinati". Prova a pensare come se la domanda fosse "ordinati" e ritenta...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
ti ringrazio, infatti l'ho proprio letta senza pensare.. l'ho riletta più attentamente ed infatti dà risultati giusti così:
Codice:
SELECT nome, cognome, squadra, fase FROM atleti, gare, risultati WHERE atleti.id = risultati.id_atleta AND gare.id = risultati.id_gara ORDER BY squadra |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
altra query:
stampare una scheda informativa(cognome, nome, istituto, nazionalità) del vincitore e della squadra vincitrice. lasciando perdere la squadra vincitrice perchè così come lo fatto io è forse impossibile tirarla fuori ma per il vincitore ho problemi sempre sul raggruppamento, faccio così: Codice:
SELECT nome, cognome, istituto, nazionalita, max(punteggio) AS punteggio_piu_alto FROM atleti, gare, risultati WHERE fase = 'internazionale' AND atleti.id = risultati.id_atleta AND gare.id = risultati.id_gara GROUP BY punteggio |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
risolto anche questo.. scusate, mannaggia a me che facico le cose all'ultimo momento
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
stai facendo i vecchi esami di maturità di informatica vero?
__________________
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
si si, a noi il prof ce l'ha dato come simulazione d'esame anche se con un paio di query in più..
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:39.












questo è quello dell'anno scorso








