SQL (Structured Query Language)

Un corso completo sul linguaggio SQL (Structured Query Language): definizioni, esempi ed esercizi

SQL - Soluzioni esercizi cap. 5

1) Possiamo ottenere quanto richiesto utilizzando una delle seguenti select.

La seconda select utilizza usa una sintassi non implementabile tramite SQL Plus 8.0; notiamo che i nomi dei campi specificati in ON sono preceduti dal nome della tabella a cui appartengono.

SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA

FROM ISCRITTI, FAMILIARI

WHERE MATRICOLA = MATRICOLA_DEL_PARENTE_ISCRITTO;

SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA

FROM ISCRITTI INNER JOIN FAMILIARI

ON ISCRITTI.MATRICOLA = FAMILIARI.MATRICOLA_DEL_PARENTE_ISCRITTO;

2)

SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA

FROM ISCRITTI LEFT JOIN FAMILIARI

ON ISCRITTI.MATRICOLA = FAMILIARI.MATRICOLA_DEL_PARENTE_ISCRITTO;

3) Possiamo utilizzare una delle seguenti select.

SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA

FROM ISCRITTI INNER JOIN FAMILIARI

ON

(ISCRITTI.MATRICOLA = FAMILIARI.MATRICOLA_DEL_PARENTE_ISCRITTO AND ETA < 20);

SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA

FROM ISCRITTI, FAMILIARI

WHERE ISCRITTI.MATRICOLA = FAMILIARI.MATRICOLA_DEL_PARENTE_ISCRITTO

AND ETA < 20;

4) Una possibile soluzione del problema è la seguente select:

SELECT MARCHE.COD_CASA, NOME_CASA, CITTA, NOME_AUTO

FROM MARCHE, MODELLI

WHERE MARCHE.COD_CASA = MODELLI.COD_CASA

AND CILINDRATA BETWEEN 1000 AND 2000

AND TIPO = ‘SPORT’;

Possiamo ottenere lo stesso risultato utilizzando le parole chiave INNER JONI e/o adoperare gli operatori di confronto classici invece di BETWEEN e END.

5) Possiamo utilizzare una delle seguenti select.

SELECT MARCHE.COD_CASA, NOME_CASA

FROM MARCHE, MODELLI

WHERE MARCHE.COD_CASA = MODELLI.COD_CASA

AND TIPO = ‘SPORT’

GROUP BY MARCHE.COD_CASA, NOME_CASA

HAVING COUNT(*) > 2;

SELECT MARCHE.COD_CASA, NOME_CASA

FROM MARCHE INNER JOIN MODELLI

ON

(MARCHE.COD_CASA = MODELLI.COD_CASA

AND TIPO = ‘SPORT’)

GROUP BY MARCHE.COD_CASA, NOME_CASA

HAVING COUNT(*) > 2;

6) Possiamo utilizzare una delle seguenti soluzioni:

SELECT NUMERO

FROM TABELLA1

INTERSECT

SELECT NUMERO

FROM TABELLA2;

La parola chiave INTERSECT non è implementata da Access.

SELECT TABELLA1.NUMERO

FROM TABELLA1, TABELLA2

WHERE TABELLA1.NUMERO = TABELLA2.NUMERO;

SELECT TABELLA1.NUMERO

FROM TABELLA1 INNER JOIN TABELLA2

ON TABELLA1.NUMERO = TABELLA2.NUMERO;

Quest’ultima sintassi non è accettata da SQL Plus 8.0

Autore: Art Net

Condividi questo articolo su

12 Commenti

  1. Ho imparato alcune cose buone qui. Certamente merita il bookmarking per la rivisitazione.

    Mi chiedo quanti sforzi hai impostato per creare questo tipo di fantastico sito informativo.

    Rispondi al Commento
  2. guida molto interessante grazie se ci fossero anche le istruzioni per creare la tabella sarebbe completa secondo me

    Rispondi al Commento
  3. Grazie per la guida. Semplice, interessante ed utile.
    Vorremmo segnalare due cose. Un errore ed un dubbio.
    Errore:
    SELECT DIVISIONE, AVG(STIPENDIO)
    FROM DIPENDENTI
    HAVING AVG(STIPENDIO) > 2200000;

    manca la “group by DIVISIONE” prima della HAVING.

    Di conseguenza il dubbio sul punto 6.
    HAVING non è necessario che venga posta dopo la clausola GROUP BY.
    Sicuri?

    Rispondi al Commento
  4. Guida Molto utile, segnalo un errore nella query 9, capitolo 2, delle soluzioni:
    PrezzoIngrosso è moltiplicato * 1,5 ma si chiedeva un aumento del 15%, ciò significa moltiplicare * 1,15

    Rispondi al Commento
  5. Veramente complimenti, una guida dettagliata, semplice e adatta a tutti 🙂

    FortyZone

    Rispondi al Commento
  6. Davvero complimenti ragazzi. La prima guida che per chi parte da zero è manna dal cielo…PERFETTA!!

    Rispondi al Commento
  7. nel punto 8 la soluzione non dovrebbe essere con HAVING MIN(IMPORTO) > 400 000; cioè: SELECT BENEFICIARI FROM ASSEGNI GROUP BY BENEFICIARIO HAVING MIN(IMPORTO) > 400 000;

    Rispondi al Commento
  8. un ottimo Manuale unico errore (se vogliamo chiamarlo cosi) i tipi di dati Char(5) number(5,2) cosa sono e come si usano

    Rispondi al Commento
  9. Complimenti ottimo sito! fatto davvero bene. Grazie!

    Rispondi al Commento

Invia commento

Il tuo indirizzo email non sarà pubblicato.