• Like
  • Save
Lezione Sql Sub Query
Upcoming SlideShare
Loading in...5
×
 

Lezione Sql Sub Query

on

  • 11,137 views

subquery inner query simple queries

subquery inner query simple queries

Statistics

Views

Total Views
11,137
Views on SlideShare
11,018
Embed Views
119

Actions

Likes
0
Downloads
44
Comments
0

6 Embeds 119

http://didatticasilvanonatalizi.blogspot.com 70
http://www.slideshare.net 24
http://didatticasilvanonatalizi.blogspot.it 22
http://www.didatticasilvanonatalizi.blogspot.com 1
http://www.slashdocs.com 1
https://duckduckgo.com 1

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Lezione Sql Sub Query Lezione Sql Sub Query Presentation Transcript

    • Lezione SQL-SubQuery 1 Prof. Silvano Natalizi – classe VA – Liceo Tecnico – Gennaio 2009
    • Che cosa è una SubQuery ?
      • Una SubQuery è una query SELECT interna (nested/nidificata) ad un’altra query di tipo SELECT o INSERT o UPDATE o DELETE
      • È usata per creare della informazione richiesta dalla query esterna (principale)
      • Una subquery può contenere altre query nidificate al suo interno. Questa nidificazione può proseguire per molti livelli (all’infinito)
    • Quando è necessaria una subquery?
      • Quano non è possibile ricavare direttamente da nessuna tabella la risposta al quesito posto, se prima non si risponde, con l’uso della SELECT, ad un’altra domanda.
      • Ad esempio, per scrivere una SELECT che ci permetta di conoscere i voti dello studente la cui media dei voti è la più alta.
    • Sintassi della SubQuery
      • La sintassi della subquery è la medesima di una normale SELECT
      • La subquery è sempre racchiusa tra una coppia di parentesi tonde
      • Una subquery non termina con il punto e virgola
      • Non usare la clausola ORDER BY all’interno di una subquery
    • Quale query è valutata per prima ?
      • La query interna è valutata per prima, poi quella esterna
    • Come si creano le subquery
        • Main query: prima query che appare nel comando SELECT
        • La Subquery restituisce i valori che vengono usati nella query principale
    • Come si scrive in pratica una subquery
      • Di solito una subquery appare dopo la clausola WHERE al seguente modo:
      • WHERE test_expr [NOT] IN (subquery)
      • WHERE test_expr op ALL (subquery)
      • WHERE test_expr op ANY (subquery)
      • WHERE test_expr op (subquery)
      • WHERE [NOT] EXISTS (subquery)
      • test_expr è un valore, il nome di una colonna, un’espressione
      • Op è un operatore di confronto (=,<>,<,<=,>,>=)
    • Che cosa restituiscono le subquery
      • Bisogna essere consapevoli, di volta in volta, di quali dati sono restituiti da una query nidificata
      • Le query nidificate possono restituire un valore singolo o valori multipli:
        • To match valori singoli usa l’operatore =
        • To macth valori multipli usa l’operatore IN
    • Query semplici o non correlate
      • Una query semplice è quella che viene valutatua indipendentemente dalla sua query esterna ed è elaborata solo una volta.
      • Una query correlata invece dipende dai dati della query esterna.
      • In questa lezione ci limitiamo a studiare le query interne semplici.
    • Esempio di subquery: enunciato del problema
      • Risolviamo il problema di trovare tutti i voti degli studenti inferiori al voto medio di tutti gli studenti.
      • Come si fa ?
      • Il voto medio non esiste nella tabella voto, perché è un attributo derivato da calcolare con la funzione aggregata avg(voto).
      • Pertanto prima di rispondere alla domanda posta, occore avere il dato voto medio che ci viene restituito da una prima query
      • Possiamo pertanto utilizzare due query:
      • Una prima query interna che ci restituisce il valor medio del voto ed una query esterna che ricava tutti i voti che siano inferiori a questo valor medio
    • Esempio di subquery: soluzione del problema
      • La query interna si scrive così:
        • (SELECT avg(voto) FROM voto )
      • La query esterna si scrive così:
        • SELECT idStudente,idmateria, voto, FROM voto WHERE voto<(…);
      • Mettendo insieme le due query otteniamo:
        • SELECT idStudente,idmateria, voto FROM voto WHERE voto<(SELECT avg(voto) FROM voto ) ORDER BY idStudente;
    • Esecuzione della subquery
    • Se si vuole sapere quanti sono i voti maggiori del voto medio ? Minori ?
      • La query interna non cambia.
      • Quella esterna invece ha la funzione aggregata count(voto):
      • Pertanto avremo:
        • SELECT count(voto) as ‘numero voti minori media’ FROM voto WHERE voto<(SELECT avg(voto) FROM voto);
      • come vediamo dal risultato dell’esecuzione di questa subquery, abbiamo 7 voti inferiori alla media
      • Questo risultato ci conforta, perché se contiamo le righe del risultato della precedente subquery, troviamo proprio 7!
    • CONTINUA…