1 / 24

Access: query avanzate

Access: query avanzate. Marco Gribaudo Marcog@di.unito.it. Query su più tabelle. Quando vi sono delle relazioni che intercorrono tra i record di più tabelle, è solitamente necessario porsi domande che utilizzino campi appartenenti alle varie tabelle.

libba
Download Presentation

Access: query avanzate

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Access: query avanzate Marco Gribaudo Marcog@di.unito.it

  2. Query su più tabelle • Quando vi sono delle relazioni che intercorrono tra i record di più tabelle, è solitamente necessario porsi domande che utilizzino campi appartenenti alle varie tabelle. • Per questo è possibile creare Query che lavorino su più tabelle contemporaneamente

  3. Query su più tabelle (II) • Quando si specificano più tabelle in una Query, viene operato il prodotto cartesiano tra i record delle tabelle. • Ogni record della prima tabella, viene affiancato da ogni record della seconda. • Se la prima tabella ha m record e la seconda ne ha n, vengono generati nxm record!

  4. Filtrare su campi corrispondenti • Se vi sono filtri sulle righe e sulle colonne di entrambe le tabelle, vengono prodotti record costituiti unicamente dalle combinazioni dei record delle tabelle filtrate. • Uno dei filtri più comuni che si specifica è quello di chiedere che il campo di un record sia uguale ad un campo dell’altro.

  5. Filtrare su campi corrispondeni (II) • Inoltre i campi che si chiede essere uguali sono solitamente la chiave interna di una tabella con una chiave esterna dell’altra. • Ad esempio possiamo avere: • Un archivio delle città, ognuna con associato un codice. • Un archivio di indirizzi, dove al posto del nome della città c’è solamente il codice. • Per ottenere l’indirizzo completo, occorre comporre le due tabelle e tenere solamente i record dove i codici sono uguali!

  6. Join di tabelle • L’operazione di filtrare su chiavi uguali viene chiamata Join. • Siccome tale operazione è molto comune, esistono delle tecniche che ne ottimizzano il funzionamento. • Tali ottimizzazioni vengono attivate solamente se l’utente specifica in modo diverso le operazioni di Join.

  7. Join di tabelle (II) • In Access le operazioni di Join si specificano trascinando il campo di una tabella su quello collegato di un’altra. • I collegamenti vengono rappresentati mediante frecce che uniscono le due tabelle. • Vi possono essere più tabelle, ed anche più operazioni di Join!

  8. Join di tabelle (III) • Quando sono state stabilite delle relazioni nell’apposita maschera, Access aggiunge automaticamente il collegamento quando si selezionano tabelle correlate. • Access aggiunge automaticamente la relazione anche quando una tabella ha un campo il cui nome corrisponde al nome della chiave primaria di un’altra. • Le relazioni possono essere selezionate facendovi click sopra col mouse, e cancellate con il tasto Canc.

  9. Tipi di Join • Esistono 3 tipi di Join diverso: • Join simmetrico • Join interno (o sinistro) • Join esterno (o destro) • I tre tipi differiscono su come operano quando incontrano un campo contenente una chiave nulla.

  10. Join simmetrico • Nel Join simmetrico vengono considerati solamente i record di una tabella per cui vi siano dei record corrispondenti (con la stessa chiave) nell’altra. • Se un record contiene nella sua chiave (interna od esterna) un valore che non ha corrispondente, questo viene scartato.

  11. Join interni ed esterni • In alcuni casi, si vogliono però considerare anche i record che non hanno un corrispondente specifico dall’altra parte. • Ad esempio se si fa un elenco degli studenti con gli esami che hanno sostenuto, si può volere includere anche gli studenti che non hanno sostenuto esami. • Con un Join simmetrico questi verrebbero scartati!

  12. Join interni ed esterni (II) • Per questo esistono i Join interni ed esterni. • Un Join interno considera tutti i record della prima tabella, a cui collega (se possibile) quelli della seconda. • Un Join esterno considera tutti i record della seconda, a cui associa (se possibile) quelli della prima.

  13. Join interni ed esterni (III) • Es.: • Studenti INNER JOIN Corsi • Tutti gli studenti (anche quelli che non sostenuto esami), e gli esami che hanno eventualmente sostenuto. • Studenti OUTER JOIN Corsi • Tutti gli esami (Anche quelli che non sono stati sostenuti da alcuno studente), e gli studenti che li hanno eventualmente sostenuti.

  14. Join interni ed esterni • I Join interni ed esterni sono simmetrici: • Studenti INNER JOIN Corsi = Corsi OUTER JOIN Studenti • Corsi INNER JOIN Studenti = Studenti OUTER JOIN Corsi.

  15. Query di eliminazione • Permettono di cancellare i record dalle tabelle. • Sono come le Query di selezione, ma in questo caso i record selezionati vengono cancellati.

  16. Query di eliminazione (II) • La riga “elimina” determina se il campo serve a stabilire quali record cancellare (dove) o indica se il record di quella tabella debba essere cancellato (da). • La cancellazione avviene quando si preme !, mentre andando in visualizzazione foglio dati si possono sapere i record che verranno eliminati. • L’operazione di cancellazione non si può annullare!

  17. Query di aggiornamento • Permettono di modificare i valori dei record selezionati. • Nella riga “aggiorna” si inseriscono le espressioni che calcolano i nuovi valori da assegnare ai campi corrispondenti. • Le espressioni utilizzabili sono simili a quelle viste nel caso dei campi calcolati.

  18. Query di accodamento • Servono per aggiungere ad una tabella, i record selezionati da una query. • Quando si sceglie una Query di accodamento bisogna specificare la tabella a cui i dati verranno aggiunti. • Per ogni campo si selezionato nella query si può scegliere in quale campo della tabella destinazione dovrà essere memorizzato, attraverso la riga “Accoda a”.

  19. Query di creazione tabelle • Le Query di creazione tabella, creano una nuova tabella contenente i risultati della query. • Sono identiche alle Query di selezione, con la sola differenza che all’inizio viene chiesto il nome della tabella che si intende creare.

  20. Query a campi incrociati • Le Query a campi incrociati permettono di creare tabelle in cui il numero di campi risulti anche esso determinato dal risultato di una operazione di selezione. • Sono concettualmente simili alle Query di selezione in cui si esegue un’operazione di raggruppamento.

  21. Query a campi incrociati (II) • Nella riga “campi incrociati” si specifica se il dato debba essere: • Intestazione riga: utilizzato per definire le righe della tabella in uscita. • Intestaz. Colonna: adoperato per definire le colonne della tabella in uscita. • Valore: determinare i valori da mettere all’intersezione delle righe con le colonne.

  22. Query di unione • Le Query di unione servono ad unire in una unica tabella i risultati di altre Query o di altre tabelle. • Le Query di unione non possono essere definite graficamente, ma solamente attraverso il linguaggio SQL.

  23. Query di unione (II) • Si scrive: Select Campo, Campo… From tabella1 Union Select Campo, … From tabella2 • Es.: Select * From StudentiFisica Union Select * From StudentiChimica

  24. Query di unione (III) • Tabella1, Tabella2 possono essere tanto tabelle che Query. • I campi di tipo “memo” non possono rientrare in una Query di unione. • Se si vogliono selezionare tutti i campi si utilizza *, altrimenti si specificano i nomi dei campi, separati da virgole.

More Related