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:

Listato 5.1 – Studenti con 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.

Listato 5.2 – JOIN fra Studenti e Valutazioni

<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>