|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 4418
|
[SQL] piccolo problemino con query con NOT EXISTS
Salve ragazzi, ho un piccolo problemino per l'uni spero mi possiate aiutare.
Ho queste 2 tabelle: Studenti( matricola, cognome, nome) Esami(studente, materia, voto, giorno) (sottolineate sono le chiavi). Devo trovare matricola, cognome e noe degli studenti che hanno preso TUTTI 30. io ho immaginato una cosa simile: Codice:
SELECT S1.matricola, S1.cognome, S1.nome
FROM Studenti S1 join Esami E2 on E2.studente = S1.matricola
WHERE NOT EXISTS ( select E2.studente, E2.materia
from Esami E2
where E2.voto < 30 )
Mi sapete dare una mano? thx! Ultima modifica di manowar84 : 24-05-2006 alle 13:05. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 4418
|
ho provato anche così:
Codice:
select *
from Studenti S1
where not exists(
select S1.matricola, S1.cognome, S1.nome
from Esami E2 join Studenti S1 on E2.studente = S1.matricola
where E2.voto < 30)
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Perchè invece di fare tutti sti giri che fanno venire mal di testa non controlli semplicemente chi ha una media = 30?
Del tipo (l'ho provato in mysql): Codice:
SELECT esami.studente, studenti.nome, studenti.cognome FROM esami, studenti WHERE esami.studente = studenti.matricola GROUP BY esami.studente HAVING AVG(esami.voto) = 30; 'iao |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 4418
|
sai che non ci avevo pensato in effetti è vero!
ora provo e ti faccio sapere! (io uso ibm db2 ma è lo stesso! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Prova così
Codice:
select *
from Studenti S1
where not exists(
select *
from Esami E2 join Studenti S1 on E2.studente = S1.matricola
where E2.voto < 30)
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 4418
|
Quote:
sto provando a fare come dice orphen, mi da qualche errore ma non demordo! thx cmq! |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Quote:
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 4418
|
ho risolto!! calcola che la seconda parte (ovvero quella che trova quelli che non hanno voti = 30) funzionava, bisogna specificare una condizione nel secondo where.
Codice:
select *
from Studenti S1
where not exists(
select S2.matricola, S2.cognome, S2.nome
from Esami E2 join Studenti S2 on E2.studente = S2.matricola
where E2.voto < 30
and S1.matricola = S2.matricola
)
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 4418
|
mi sto impazzndo con la prima soluzione che mi avete proposto.
ho prvato con average del tipo: Codice:
select distinct Studenti.matricola, Studenti.cognome, Studenti.nome from Studenti join Esami on Studenti.matricola = Esami.studente group by Esami.studente |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 4418
|
edit:
ok risolto, dovevo mettere tutto nel group by! di nuovo grazie a tutti!! |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
figurati e scusa per il problema del group by, quando ho pensato alla soluzione non mi era proprio passato per la testa!
'iao |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:02.



















