Lezione 13: Tabelle Dinamiche e SQL | |
Una funzione molto utilizzata delle Active Server Pages è l'abilità di creare, cancellare, recuperare e aggiornare informazioni all'interno dei databse. In questo corso utilizzeremo database di tipo Microsoft Access come sorgente di dati, perciò sarà importante che comprendiate alcuni fondamenti sui database. |
Fausto Marinsalta |
La clausola WHERE Nell'esempio 3.1 abbiamo creato un’interrogazione che selezionava gli studenti e il loro voto per ciascun studente. Possiamo ora utilizzare la clausola SQL WHERE per restringere la nostra ricerca. L'esempio 5.1 contiene la stringa SQL modificata, che seleziona solo quegli studenti che hanno ricevuto una valutazione minore di 70 nell'Esame2: <html> <head><title>Esempio 5.1</title></head> <body> <table width="150" border="1"> <tr> <td width="75">SID</td> <td width="75">Esame 2</td> </tr> <% openCN
sql="SELECT SID" & _ ",Esame2" & _ " FROM Valutazioni" & _ " WHERE Esame2 < 70"
rs.Open sql, cn do while not rs.EOF %> <tr> <td width="75"> <%=rs("SID")%> </td> <td width="75"> <%=rs("Esame2")%> </td> </tr> <% rs.MoveNext loop rs.Close closeCN %> </table> </body> </html> Introduciamo la clausola JOIN Come premesso nell'introduzione, è ora tempo di introdurre la parola chiave JOIN. Siccome il nostro database (entrambe le tabelle) è perfettamente normalizzato, la tabella Studenti deve essere "joinata" con la tabella Valutazioni in modo da generare un report che contenga sia il Nome dello Studente che la sua Valutazione. La sintassi per un join è la seguente:
SELECT [lista campi] FROM [prima tabella] [INNER | LEFT | RIGHT ] JOIN [seconda tabella] ON [prima tabella].[campo chiave] = [seconda tabella].[campo chiave esterno]
Quando si congiungono tabelle, spesso esse vengono legate tramite i campi Chiave Chiave Esterna. Nelle nostre due tabelle, SID è la Chiave Primaria nella tabella Studenti, e la Chiave Esterna nella tabella Valutazioni. A volte può essere molto più semplice utilizzare un tool come le Query di Microsoft Access per generare le stringhe SQL, specialmente quando si uniscono molteplici tabelle. L'esempio 5.2 è la prima interrogazione che introduce JOIN. <html> <head><title>Esempio 5.2</title></head> <body> <table width="350" border="1"> <tr> <td width="75">SID</td> <td width="200">Name</td> <td width="75">Exam 2</td> </tr> <% openCN
'leggi sid, nome, cognome e esame2 'dove esame2 è minore di 70
sql="SELECT Valutazioni.SID, " & _ "Studenti.Nome, " & _ "Studenti.Cognome, " & _ "Valutazioni.Esame2 " & _ "FROM Valutazioni " & _ "INNER JOIN Studenti " & _ "ON Valutazioni.SID = Studenti.SID " & _ "WHERE Valutazioni.Esame2 < 70"
rs.Open sql, cn do while not rs.EOF %> <tr> <td width="75"> <%=rs("SID")%> </td> <td width="200"> <%=rs("Nome") & " " & rs("Cognome")%> </td> <td width="75"> <%=rs("Esame2")%> </td> </tr> <% rs.MoveNext loop rs.Close closeCN %> </table> </body> |