|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
[mysql] mi aiutate a scrivere questa piccola interrogazione?
Salve, è da un po che mi stò scervellando, ma non riesco a capire come scrivere in sql questa interrogazione. Ho una relazione studenti che ha matricola, nome e cognome; poi una relazioni Esami che ha matricola, corso e voto.
Come faccio a scrivere in sql un interrogazione che mi riporti il nome e cognome dello studente con la media maggiore???? Io ho scritto questo per avere le matricole degli studenti con le rispettive medie: Codice:
select matr, avg(voto) as media from S natural join E group by matr; grazie
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 1999
Città: Pistoia
Messaggi: 618
|
in MySQL c'è l'operazione LIMIT e puoi fare cosi
Codice:
SELECT s.matr,AVG(e.voto) AS media FROM s NATURAL JOIN e GROUP BY s.matr ORDER BY media desc LIMIT 1; |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
SELECT Studenti.Nome,Studenti.Cognome,Studenti.Matricola
FROM Studenti,Esami WHERE Studenti.matricola=Esami.MatricolaStudente GROUP BY Studenti.matricola,Studenti.Nome,Studenti.Cognome HAVING AVG(Esami.voto)= (SELECT MAX(mediaVoto) FROM (SELECT AVG(voto) AS mediaVoto FROM Esami GROUP BY MatricolaStudenti) Ultima modifica di nuovoUtente86 : 01-05-2008 alle 22:48. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
Quote:
Ovvero: 1) nel primo FROM, che vuol dire mettere studenti, esami (cioè usare la virgola)? 2)Esami.MatricolaStudente è il campo matricola della relazione esami giusto?? Io li avevo chiamati allo stesso modo, cioè matricola sia in esami che in studenti, ma è lo stesso. grazie cmq....vi chiedo un altra cosa, come potrei fare pratica??? L'8 maggio ho la prova, e vorrei esercitarmi un bel po, potreste consigliarmi qualcosa?
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
edit: ho appena provato l'interrogazione su mysql, ma mi restituisce questo errore:
every derived table must have its own alias che vuol dire? c'è un errore nella sintatti....?
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Rispondo ora ai quesiti: 1)è identico a fare studenti JOIN esami. 2)devi ovviamente utilizzare i nomi degli attributi che hai assegnato nel tuo schema.Per buona norma quando si ha una relaziona che ne associa altre(ci sarà presumibilmente anche il vincolo di chiave esterna)si nomina l' attributo componendo il nome in questo modo nomeattributo+nometabella...in questo caso matricolaStudente....non è assolutamente una regola scritta...ma a mio avviso ti facilita anche molto la comprensione e manipolazione della base di dati. Per esercitarti svolgi gli appelli d' esame precedente..trovandone magari qualcuno di qualche altra università che sia coerente con il programma svolto. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
ti dice che ogni tabella derivata deve avere un suo alias....in SQLServer non avviene...cmq prova ad aggiungere in fondo alla query AS tabellaMedia
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:28.



















