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>