Visualizzazione dei risultati da 1 a 10 su 42

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    [SQL] Comprendere una query

    Date le tabelle create con le seguenti istruzioni:

    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))

    Si supponga che vengano registrati anche gli esami non superati, con voti inferiori
    al 18. Formulare in SQL l’interrogazione che trova i nomi degli studenti che hanno superato almeno due esami.

    La soluzione proposta è:

    select distinct s.nome, s.cognome
    from Studenti s, Esami e1 join Esami e2 on (e1.studente = e2.studente)
    where e1.codiceCorso > e2.codiceCorso and e1.voto >= 18 and e2.voto >= 18 and
    s.matricola = e1.studente;

    Sinceramente non la capisco molto.
    Per esempio cosa succede con questa istruzione:

    from Studenti s, Esami e1 join Esami e2 on (e1.studente = e2.studente)?

    La tabella studenti viene *joinata* con Esami in maniera implicita tramite quel s.matricola = e1.studente, perché non fare direttamente un triplo join (ammesso che sia utile)?
    E perché mi fa il join di Esami con Esami?
    E ancora, perché e1.codiceCorso > e2.codiceCorso and e1.voto >= 18 and e2.voto >= 18 ?
    Si poteva fare in un modo più semplice da comprendere?
    Grazie a chiunque vorrà rispondermi.



    Ultima modifica di Jamie04; 21-07-2016 a 20:08

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.