In sintesi
In questa lezione analizziamo come vengono creati i join fra le tabelle di una query con Instant Developer.
Nota: questo video corso è stato realizzato con la versione 4 di Instant Developer. Anche se i contenuti sono ancora attuali e sono utili per imparare ad utilizzare Instant Developer, alcune affermazioni sono di fatto superate. Per i dettagli e le ultime novità sulle funzionalità illustrate vi rimandiamo alla sezione di reference che viene tenuta aggiornata giornalmente.
Consideriamo le tabelle Products e Order Details. La prima contiene i prodotti mentre la seconda contiene il dettaglio di tutti gli ordini. Il prezzo di ogni singolo prodotto non è costante ma dipende dal momento in cui un certo ordine è stato effettuato e dal tipo di sconto applicato al cliente che ha effettuato l'ordine. Ora, supponiamo di voler visualizzare per ogni prodotto il nome, il prezzo minimo e massimo di tutti i dettagli d'ordine presenti nel database.
Creiamo una nuova vista e la chiamiamo Prices. Poi tiriamo la tabella Products sulla vista premendo il tasto SHIFT. Ora tiriamo la tabella Order Details sulla vista premendo il tasto SHIFT.
In questo caso Instant Developer ha automaticamente aggiunto una condizione (non visibile in visual code) che lega le due tabelle. Questo vuol dire che la vista conterrà i soli prodotti per i quali è disponibile almeno un dettaglio d'ordine che li riguarda. Questo tipo di legame è chiamato Inner Join ed è il tipo predefinito. Nel nostro caso la seconda tabella (Order Details) è legata alla prima tabella (Products) mediante la foreign key Product ID di Order Details (è possibile visualizzare questo legame aprendo il menu contestuale sulla tabella Order Details ).
Controlliamo per un attimo il codice prodotto mediante il comando View Code. Qui vediamo la condizione che viene automaticamente aggiunta: Product ID della prima tabella (Products) deve essere uguale al Product ID della seconda tabella (Order Details).
E' possibile chiedere ad Instant Developer di disabilitare tale legame mediante il comando Disable Auto Join.
Supponiamo, tornando all'esempio dei prezzi minimi e massimi, di essere interessati a vedere in questa view tutti i prodotti, anche quelli per i quali non è mai stata emessa una riga d'ordine. Tali prodotti, a causa dell'inner join, non sarebbero stati presenti nella vista. In questo caso dobbiamo comunicare al database server che ci serve un tipo di legame diverso di quello già visto in quanto un dato record deve esistere nella vista solo se c'è il prodotto e non se ci sono entrambi (come per l'Inner Join). Questo tipo di legame si chiama Outer Join ed è possibile indicare quale tabella, o quali tabelle, sono la parte esterna del legame mediante l'apposito flag visibile sulla proprietà della tabella stessa.
Vediamo infine il grafico della vista appena creata mediante il comando View Graph.