Prime Interrogazioni SQL

di il
5 risposte

Prime Interrogazioni SQL

Buonasera a tutti, mi aiutate a capire dove sbaglio?
Dovrei sviluppare questi punti:
1. l’interrogazione che trova gli studenti che non hanno superato esami;
2. l’interrogazione che trova gli studenti che hanno riportato in almeno un esame un voto più alto
di Archimede Pitagorico;
3. l’interrogazione che trova i nomi degli studenti che hanno superato almeno due esami;
4. l’interrogazione che trova, per ogni studente, il numero di esami superati e la relativa media
1)Se provo ad eseguire questa select mi ritrovo le voci duplicate:
SELECT DISTINCT matricola, cognome, nome, voto
FROM Studenti, Esami
WHERE Voto < 18;
Se invece escludo la tabella voto, ho i voti degli studenti con voto inferiore a 18 senza duplicati, ma non vedo i voti

Le tabelle sono le seguenti:
create table Studenti (
	matricola numeric not null primary key,
	cognome char(20) not null,
	nome char(20) not null,
	eta numeric not null
);
create table Esami (
	codiceCorso numeric not null,
	studente numeric not null
		references Studenti(matricola) ,
	data date not null,
	voto numeric not null,
	primary key (codiceCorso, studente, data)
);
Grazie anticipatamente

5 Risposte

  • Re: Prime Interrogazioni SQL

    Per il secondo punto invece ho provato questo, ma non va...
    from Studenti join Esami on matricola=studente
    where voto > any ( select voto
     from Esami join Studenti on studente = matricola
     where cognome = 'pitagorico'
     and nome = 'archimede');
  • Re: Prime Interrogazioni SQL

    Sono query semplici. Il concetto ""non va"" NON ESISTE.
    Se non va, vuol dire che e' sbagliato!
    Lo so che lo sai, ma sono QUERY SEMPLICI. Ti serve l'aiuto di superintelligentoni per capire perche' una cosa semplice non funziona?

    L'approccio da usare e' sempre lo stesso: se una cosa ""complicata"" non funziona

    1) la si ""smonta"" in parti piu' semplici
    2) si provano le parti semplici fino a che non funzionano
    3) si montano le parti semplici, una alla volta, per ricostruire la cosa complicata, controllando che ogni aggiunta funzioni.

    Infine, si STUDIA sui libri, non su Internet e non si va ""a spanne""

    Una primary key in Esami fatta in quel modo e' valida ma non ha molto senso
    La select distinct non ha molto senso
    La "from Studenti join Esami on matricola=studente" se e' tutta qui, E' SBAGLIATA, e comunque ci sono modi piu' corretti per scriverla.
    Tutte cose che trovi in QUALUNQUE libro su SQL.
  • Re: Prime Interrogazioni SQL

    Mi associo in toto a Migliorabile.
    Aggiungo anche che nella tabella Esami la FK Studente è sbagliata, dovrebbe essere Matricola.
    Infatti impostare la relazione così, non va bene (oltre che essere sbagliata la sintassi):
    on matricola=studente 
    ma dovrebbe essere:
    ON Studenti.Matricola=Esami.Matricola
    I due campi relazionati devono sempre avere lo stesso nome, mentre tu usi nomi diversi.
  • Re: Prime Interrogazioni SQL

    I due campi relazionati DEVONO sempre avere lo stesso nome, mentre tu usi nomi diversi.
    diciamo DOVREBBERO. La regola e' un STRA-OTTIMA REGOLA, ma non e' obbligatorio.
  • Re: Prime Interrogazioni SQL

    migliorabile ha scritto:


    diciamo DOVREBBERO. La regola e' un STRA-OTTIMA REGOLA, ma non e' obbligatorio.
    Se la mettiamo su questo piano, nulla è obbligatorio! Nemmeno la normalizzazione.
Devi accedere o registrarti per scrivere nel forum
5 risposte