Opzioni sulle unioni di dati
Join di dati e nullità di record
A volte avrai una tabella in cui in un campo mancano alcuni record. Ecco un esempio di elenco di dipendenti in cui alcuni record non specificano il dipartimento a cui appartiene il dipendente:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Employees.DepartmentCode AS Department FROM Employees;
Ciò produrrebbe:
Se crei una query di inner join di due tabelle che hanno una relazione e alcuni record della tabella figlio mancano di alcuni valori nella colonna della chiave esterna, la query produrrebbe solo i record che hanno un valore. Ecco un esempio:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Departments.DepartmentName AS Department FROM Departments INNER JOIN Employees ON Departments.DepartmentCode = Employees.DepartmentCode;
Ciò produrrebbe:
Si noti che la query produce meno record. In effetti, ai motori di database non piacciono i record nulli soprattutto sui campi condivisi, campi coinvolti nelle relazioni. Per assicurarsi che tutti i record di una tabella figlio siano prodotti da una query, produrre un valore predefinito per i record i cui valori sono mancanti. Se la relazione utilizza un numero intero semplice, creare un record con il valore 0. Se la relazione utilizza una stringa, puoi creare un record con un valore "N/D". Se i record vengono elaborati da un computer, puoi creare un record con un valore generico/casuale come 00000 o qualcosa del genere.
Apprendimento pratico:gestione di unioni di dati e nullità dei record
- Avvia Microsoft Access
- Dalle risorse che accompagnano queste lezioni, apri il database di Altair Realtors3
- Nella barra multifunzione, fai clic su Crea e fai clic su Progettazione query
- Nella finestra di dialogo Mostra tabella, fare doppio clic su Proprietà e fare clic su Chiudi
- Nell'elenco Proprietà, fai doppio clic su PropertyNumber, City e State
- Passa la query alla visualizzazione Foglio dati:
- Nota il numero di record:48.
Passa la query in Visualizzazione progettazione - Fai clic con il pulsante destro del mouse su un'area vuota nella parte superiore della finestra e fai clic su Mostra tabella
- Nella finestra di dialogo Mostra tabella, fare doppio clic su PropertyTypes e fare clic su Chiudi
- Nell'elenco PropertyTypes, fare doppio clic su PropertyType
- Passa la query alla visualizzazione Foglio dati
- Notare il numero di record questa volta:44.
Visualizzare la visualizzazione SQL della query e modificarne il codice come segue:SELECT Properties.PropertyNumber, Properties.City, Properties.State, Conditions.Condition FROM Properties INNER JOIN Conditions ON Properties.Condition = Conditions.Condition;
- Passa la query alla visualizzazione Foglio dati
- Nota il numero di record:38.
Chiudi la query senza salvarla - Nel riquadro di spostamento, fai doppio clic sul modulo PropertyTypes
- Crea un nuovo record come segue:
Tipo proprietà Descrizione Sconosciuto Il tipo di proprietà non è disponibile o non è chiaro. Illustrazioni - Chiudi la tabella PropertyTypes
- Nel riquadro di navigazione, fai doppio clic sul modulo Condizioni
- Crea un nuovo record come segue:
Tipo proprietà Descrizione Sconosciuto Lo stato attuale o l'aspetto (interno e/o esterno) dell'immobile non è stato verificato, non è stato valutato o non è chiaramente noto. - Chiudi la tabella Condizioni
- Nel riquadro di spostamento, fai clic con il pulsante destro del mouse sulla tabella Proprietà e fai clic su Vista struttura
- Nel lato superiore della finestra, fai clic su PropertyType
- Nel lato inferiore, fai clic su Valore predefinito e digita Sconosciuto
- Nel lato superiore della finestra, fai clic su Condizione
- Nel lato inferiore, fai clic su Valore predefinito e digita Sconosciuto
- Salva la tabella e passa alla visualizzazione Foglio dati
- Nella colonna PropertyType, per ogni cella vuota, seleziona Sconosciuto
- Nella colonna Condizione, per ogni cella vuota, seleziona Sconosciuto
- Notare che esiste un valore predefinito sia per la colonna PropertyType che per quella Condition
- Impostando solo i valori indicati, creare nuovi record come segue:
Proprietà # Tipo di proprietà Città Stato Codice postale Camere da letto Bagni Seminterrato finito Garage coperto Condizione Valore di mercato 476005 Unifamiliare Hannover PA 17331 3 2,50 Verificato 425790 152466 Martinsburg WV 1 1.00 135670 427048 Condominio Alexandria VA 3 2.00 Necessita di riparazione 622845 297427 Matinsburg Eccellente 729336 Alexandria VA 3 2.50 Necessita di riparazione 750000 300618 Harrisburg PA 17109 5 3.50 <Controllato Buona forma 515885 - Chiudi il tavolo
- Nella barra multifunzione, fai clic su Crea e fai clic su Progettazione query
- Nella finestra di dialogo Mostra tabella, fare doppio clic su Proprietà e fare clic su Chiudi
- Nell'elenco Proprietà, fai doppio clic su PropertyNumber, City e State
- Passa la query alla visualizzazione Foglio dati
- Nota il numero di record:51.
Passa la query in Visualizzazione progettazione - Fai clic con il pulsante destro del mouse su un'area vuota nella parte superiore della finestra e fai clic su Mostra tabella
- Nella finestra di dialogo Mostra tabella, fare doppio clic su PropertyTypes e fare clic su Chiudi
- Nell'elenco PropertyTypes, trascina PropertyType e rilascialo su City nella parte inferiore
- Nell'elenco delle proprietà, fare doppio clic su Camere e bagni
- Passa la query alla visualizzazione Foglio dati
- Notare il numero di record questa volta:51.
Chiudi la query senza salvarla - Apri il database Lambda Square Apartments1 creato e utilizzato in precedenza
- Nella barra multifunzione, fai clic su Crea e fai clic su Progettazione query
- Nella finestra di dialogo Mostra tabella, fai doppio clic su Pagamenti e poi su Chiudi
- Nell'elenco Pagamenti, fai doppio clic su ReceiptNumber, PaymentDate, ProcessedBy, RegistrationNumber e PaymentAmount
- Passa la query alla visualizzazione Foglio dati
- Nota il numero di record:63.
Passa la query in Visualizzazione progettazione - Fai clic con il pulsante destro del mouse su un'area vuota della finestra e fai clic su Mostra tabella...
- Nella finestra di dialogo Mostra tabella, fai doppio clic su Dipendenti e fai clic su Chiudi
- Trascina EmployeeNumber e rilascialo su ProcessedBy
- Nella parte inferiore della finestra, sostituisci ProcessedBy con
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Passa la query alla visualizzazione Foglio dati
- Nota il numero di record:46.
Chiudi la query senza salvarla - Nel riquadro di spostamento, fare doppio clic sulla tabella Impiegati e creare un nuovo record come segue (questo è per le transazioni effettuate presso la banca come un inquilino che deposita il denaro dell'affitto direttamente presso la banca):
Numero dipendente Nome Cognome Titolo 00000 Transazione elettronica con elaborazione automatica - Chiudi la tabella Dipendenti
- Nel riquadro di navigazione, fai clic con il pulsante destro del mouse sulla tabella Pagamenti e fai clic su Vista struttura
- Nel lato superiore della finestra, fai clic su Elaborato da
- Nella parte inferiore, fai clic su Valore predefinito e digita "00000"
- Salva e chiudi la tabella
- Apri la tabella Pagamenti
- Nella colonna ProcessedBy, in ogni cella vuota, digita 00000
- Chiudi la tabella Pagamenti
- Nella barra multifunzione, fai clic su Crea e fai clic su Progettazione query
- Nella finestra di dialogo Mostra tabella, fai doppio clic su Pagamenti e dipendenti
- Fai clic su Chiudi
- Trascina EmployeeNumber e rilascialo su ProcessedBy
- Nell'elenco Pagamenti, fai doppio clic su ReceiptNumber e PaymentDate
- Premi Tab e digita
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Nell'elenco Pagamenti, fai doppio clic su RegistrationNumber e PaymentAmount
- Passa la query alla visualizzazione Foglio dati
- Nota il numero di record:63.
Chiudi la query senza salvarla
Unire più di due tabelle
Finora, le nostre istruzioni di join riguardavano solo due tabelle. In realtà, puoi usare più tabelle di così. La formula base per unire tre tabelle è:
SELECT field-name(s) FROM first-table first-join-type second-table ON condition1 second-join-type third-table ON condition2
Si avvia l'espressione unendo la prima alla seconda tabella, il che significa che entrambe le tabelle devono condividere una colonna in un tipo di relazione chiave primaria-chiave esterna. Allo stesso modo, puoi creare il secondo join. Naturalmente, la seconda e la terza tabella dovrebbero avere una colonna comune. Nella maggior parte dei casi, dovrebbe esserci una colonna condivisa da tutte e tre le tabelle. La maggior parte delle volte, la relazione inizia con una colonna di chiave primaria dalla tabella padre. Quella colonna viene quindi rappresentata come chiave esterna nelle altre due tabelle.
Apprendimento pratico:unire più di due tabelle
- Nella barra multifunzione, fai clic su Crea e fai clic su Progettazione modulo
- Nella finestra delle proprietà, fare clic sulla scheda Tutto.
Fai clic su Sorgente record e fai clic sul relativo pulsante con i puntini di sospensione - Nella Mostra tabella, fai doppio clic su Dipendenti, registrazioni e appartamenti
- Fai clic su Chiudi
- Trascina EmployeeNumber dall'elenco Dipendenti e rilascialo su ProcessedBy nell'elenco Registrazioni
- Trascina ApartmentCode dall'elenco Appartamenti e rilascialo su PropNbr nell'elenco Registrazioni
- Nell'elenco Registrazioni, fare doppio clic su RegistrationID e RegistrationDate
- Premi Tab e digita
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Nell'elenco delle registrazioni, fai doppio clic su Nome, Cognome, Stato civile e Numero di figli
- Premere Tab e digitare:
Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
- Visualizza la vista SQL della query:
SELECT Registrations.RegistrationID AS [Regist #], Registrations.RegistrationDate AS [Regist Date], [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")" AS Employee, Registrations.FirstName, Registrations.LastName, Registrations.MaritalSituation AS Status, Registrations.NumberOfChildren AS Children, "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month" AS Apartment FROM Apartments INNER JOIN (Employees INNER JOIN Registrations ON Employees.EmployeeNumber = Registrations.ProcessedBy) ON Apartments.ApartmentCode = Registrations.PropNbr;
- Chiudi il Generatore di query
- Quando ti viene chiesto se desideri salvare le modifiche, fai clic su Sì
- Salva il modulo come allocazione degli affitti
- Fai doppio clic sul pulsante all'intersezione dei righelli
- Nella scheda delle proprietà, modificare le seguenti caratteristiche:
Didascalia:Appartamenti Lambda Square - Allocazione dell'affitto
Valore predefinito:Modulo continuo
Centratura automatica:Sì
Pulsanti di navigazione:No - Nella barra multifunzione, fai clic su Design
- Nella sezione Strumenti, fai clic su Aggiungi campi esistenti
- Nell'elenco dei campi, fai clic su Appartamento, tieni premuto Maiusc, fai clic su Registra # e rilascia Maiusc
- Trascina la selezione nel modulo
- Nella barra multifunzione, fai clic su Disponi e fai clic su Tabulare
- Trascina la selezione a sinistra
- Premi Ctrl + A per selezionare tutti i controlli
- Nella barra multifunzione, fai clic su Rimuovi layout
- Completa la progettazione del modulo. Ecco un esempio:
- Salva e chiudi il modulo
Join di dati e analisi dei record
Ordinamento dei record
Nei data join che abbiamo creato finora, abbiamo considerato tutti i record e lasciato che il motore di database li elenchi utilizzando solo le regole dei join integrate nell'SQL. Per rendere tale elenco più restrittivo, è possibile applicare alcune condizioni in base alle quali isolare alcuni record. È possibile creare visivamente i filtri nella vista struttura di una query o in una finestra simile. Puoi anche creare un filtro in SQL. Come fatto nelle lezioni precedenti, per includere un criterio in un SELECT dichiarazione, puoi creare un WHERE clausola.
Apprendimento pratico:Introduzione ai join e all'analisi dei dati
- Apri il database della Monson University1 utilizzato in precedenza
- Per avviare una query, sulla barra multifunzione, fai clic su Crea e fai clic su Progettazione query
- Nella finestra di dialogo Mostra tabella, fai clic su Chiudi
- Fai clic con il pulsante destro del mouse sul lato superiore della finestra e fai clic su Vista SQL
- Modificare la dichiarazione come segue:
SELECT EmployeeNumber AS [Employee #], FirstName AS [First Name], LastName AS [Last Name], Title, DepartmentName AS Department FROM Employees, Departments WHERE Employees.DepartmentCode = Departments.DepartmentCode ORDER BY LastName;
- Anteprima i risultati nella visualizzazione Foglio dati
- Se necessario, sulla barra multifunzione, fare clic su Home.
Modifica le seguenti caratteristiche:
Nome carattere:Californian FB (se non hai quel carattere, seleziona Times New Roman)
Colore carattere:blu, accento 1, più chiaro 80% (colori tema:5a colonna, 2a riga)
Colore di sfondo:più colori:rosso:195, verde:95, blu:15
Linee della griglia:orizzontale
Colore riga alternativo:più colori:rosso:128, verde:0, blu:0 - Chiudi la query senza salvarla
- Chiudi Microsoft Access