Lettura dei dati tra tabelle relazionate
Concludiamo questa guida sull'iterazione tra ASP ed i database con un esempio più complesso di lettura dei dati, ovvero attingendo informazioni da più tabelle in relazione tra loro, caso specifico delle tabelle "autori" e "libri" create nei capitoli pratici iniziali della guida stessa.
La relazione, lo ricordo, avviene per mezzo dei campi "aut_id" e "lib_autore", dove il primo è di tipo Contatore ed è la matricola dell'autore ed il secondo è di tipo Numerico che fa riferimento alla matricola dell'autore della relativa tabella, principio per cui si evita la ridondanza dei dati a favore della normalizzazione dell'applicazione.
Per maggiori informazioni tecniche in merito consiglio di leggere la FAQ SQL sulla ridondanza e la normalizzazione dei dati.
Prendiamo il file "leggi.asp" creato nella lezione 8 di questa guida e modifichiamolo in modo da far accedere l'a pagina ASP ad entrambe le tabelle, estraendo cosi i dati in maniera relazionale e logica, associandoli tra loro:
<%@LANGUAGE = VBScript%>
<%
Dim sc, cn, rs
sc = "driver={Microsoft Access Driver (*.mdb)};dbq="
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open sc & Server.MapPath("database.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
%>
<html>
<head>
<title>Lettura dei dati</title>
</head>
<body>
<h1>Lettura dei dati</h1>
<%
Dim SQL
SQL = ""
SQL = SQL & "SELECT * FROM autori, libri "
SQL = SQL & "WHERE aut_id = lib_autore ORDER BY aut_id ASC"
rs.Open SQL, cn, 1
If rs.EOF Then
%>
<p>Nessun record trovato!</p>
<%
Else
While rs.EOF = False
%>
<p>
ID: <%=rs("aut_id")%><br>
Autore: <%=rs("aut_nome")%><br>
Libro: <%=rs("lib_titolo")%>
</p>
<%
rs.MoveNext
Wend
End If
rs.Close
%>
</body>
</html>
<%
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
Sostanzialmente abbiamo modificato solo la stringa SQL da eseguire
SELECT * FROM autori, libri WHERE aut_id = lib_autore ...mettendo in relazione le due tabelle richiamandole entrambe nella porzione FROM ed associando i cosiddetti campi di JOIN, ovvero di relazione.
Ci siamo poi limitati ad estrarre i dati che ci interessano:
<p>
ID: <%=rs("aut_id")%><br>
Autore: <%=rs("aut_nome")%><br>
Libro: <%=rs("lib_titolo")%>
</p>
Lanciate il file all'indirizzo
http://localhost/test_db/leggi.aspper gustare il risultato.
Per ulteriori informazioni sulle JOIN e sulla tecniche SQL di relazione dei dati leggere il capitolo della guida ad SQL del sito JOIN - Relazioni tra più tabelle.
- << Lezione Precedente
- Indice Guida
- Lezione Successiva >>







