Código con una selección multimple (con inner join)
Código:
Este código misteriosametnte me tiraba un error que se soluciono al formatear mi PC (algo raro pero no muy importante).... pero el problema es que no me desplegaba las listas con los registros de las tablas de mi base de datos y no se porque.... pero bueno como estaba (y siego estando) muy entusiasmado con la idea de poder hacer mi primer script de ASP yo solo (un catálogo on-line tipo el de http://www.bymcomputer.cl/). La cosa es que empece a probar hasta que mágicamente aparecieron los registros desplegados en mi navegador.... el código que logró que esto funcionara fue:<%'Declarar Variables Dim Conn Dim sql Dim rs Dim categoria 'Rescate de valores por URL categoria = Request.Querystring("id") 'Se pone una condición if categoria = "" Then categoria = 1 end if 'Instanciar y abrir la conección Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("catalogo.mdb")) 'Creación de la sentencia SQL correspondiente sql="Select a.id_categoria, a.nombre_categoria, b.id_producto, b.categoria, b.imagen, b.nombre, b.precio From categorias a INNER JOIN productos b ON a.id_categoria = b.categoria Where b.categoria = " & categoria & "" 'Ejecución de la orden Set rs = Conn.Execute(sql) %> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="50%"> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="100%">Categorías</td> </tr> <% Do While Not rs.Eof %> <tr> <td width="100%"><a href="verdetalle.asp?id=<% = rs("id_categoria") %>"><% = rs("nombre_categoria") %></a></td> </tr> <% rs.MoveNext Loop %> </table> </td> <td width="50%"> <% Do While Not rs.Eof %> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id_producto") %>"><img src="<% = rs("imagen") %>"></a></td> <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id_producto") %>"><% = rs("nombre") %></a></td> <td width="34%"><% = rs("precio") %></td> </tr> </table> <% rs.MoveNext Loop %> </td> </tr> </table>
Código:
Bueno la diferencia entre estos dos códigos es que en uno trato de hacer con un solo select la selección de los campos de mis dos tablas, pero en el otro le dedique a cada uno un select "personalizado".... de tal forma que no tuviera que escribir linas como Inner Join o cosas asi.... bueno en el fondo a lo que va este mensaje es a discutir que es mejor.... una selección multiple con inner join (o sin el) o una selección y tratamiento de las tablas por separado.... que es mas rápido????.... bueno espero que me puedan ayudar.... de todos modos si encuentran el error (que yo no encontré) en el primer codigo.... porfavor diganmelo porque quisiera aprender a usar bien eso de las seleciones multiples porque veo que son muy útiles.... bueno maestros saludos a todos y muchas gracias por toda su ayuda <%
'Declarar Variables
Dim Conn
Dim categorias_sql
Dim productos_sql
Dim rs
Dim categoria
'Rescate de valores por URL
categoria = Request.Querystring("id")
'Se pone una condición
if categoria = "" Then
categoria = 1
end if
'Instanciar y abrir la conección
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("catalogo.mdb"))
'Creación de la sentencia SQL correspondiente
categorias_sql="Select * From categorias"
'Creación del Recordset
set rs = CreateObject("ADODB.Recordset")
'Apertura del Recordset
rs.Open categorias_Sql, Conn
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="20%">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%">Categorías</td>
</tr>
<%
Do While Not rs.Eof
%>
<tr>
<td width="100%"><a href="catalogo.asp?id=<% = rs("id_categoria") %>"><% = rs("nombre_categoria") %></a></td>
</tr>
<%
rs.MoveNext
Loop
rs.close
%>
</table>
</td>
<td width="80%">
<%
'Creación de la sentencia SQL correspondiente
productos_sql = "Select distinct * From productos Where categoria = " & categoria & ""
'Apertura dle Rescordset
rs.Open productos_sql, Conn
Do While Not rs.Eof
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="33%"><a herf="verdetalle.asp?id=<% = rs("id_producto") %>"><img src="<% = rs("imagen") %>" width="100" height="100"></a></td>
<td width="33%"><a herf="verdetalle.asp?id=<% = rs("id_producto") %>"><% = rs("nombre") %></a></td>
<td width="34%"><% = rs("precio") %></td>
</tr>
</table>
<%
rs.MoveNext
Loop
set rs = nothing
Conn.close
set Conn=nothing
%>
</td>
</tr>
</table>
trasgu, ve a dormir!

