Foros del Web » Programando para Internet » ASP Clásico »

Consulta compleja. Al menos para mi!!

Estas en el tema de Consulta compleja. Al menos para mi!! en el foro de ASP Clásico en Foros del Web. Tengo una base de datos con 2 tablas: Tabla autores: Idautor----------autonumerico nombreautor------texto apellidosautor---texto Tabla productos: idproducto-------autonumerico titulo-----------texto Idautor----------numerico Idautor2---------numerico Cada producto puede tener mas de ...
  #1 (permalink)  
Antiguo 21/10/2004, 00:28
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Consulta compleja. Al menos para mi!!

Tengo una base de datos con 2 tablas:

Tabla autores:
Idautor----------autonumerico
nombreautor------texto
apellidosautor---texto


Tabla productos:
idproducto-------autonumerico
titulo-----------texto
Idautor----------numerico
Idautor2---------numerico


Cada producto puede tener mas de un autor, (deje el idautor=1 en la tabla autores con los demas datos de la fila en blanco)
porque si solo tenia un autor utilizaba ese como idautor2 en la tabla productos.


La pregunta es como tendria que hacer para que se muestre para cada autor los productos que le corresponden tanto
si figura como autor unico (es decir, seria idautor2=1 en la tabla productos)
o como coautor es decir, su idautor figura como idautor o idautor2 en la tabla productos) sin que muestre los productos que le correspondan al idautor=1.


He intentado hacer algo como esto pero no lo consigo:


<%@ LANGUAGE = "VBScript" %>
<!-- #include file="db.asp" -->
<html>
<body>
<br>
<table width=100% border=0>
<td valign=top>
<%
set rscatlist=db.Execute("SELECT * FROM productos INNER JOIN autores ON productos.idautor = autores.idautor OR productos.idautor2 = autores.idautor order By autores.idautor")
if rscatlist.eof then
else
idautor=rscatlist("idautor")
Nombreautor=rscatlist("Nombreautor")
apellidosautor=rscatlist("apellidosautor")
idproducto=rscatlist("idproducto")
titulo=rscatlist("titulo")
end if
%>
<%
while not rscatlist.eof
%>
<h2><% = rscatlist("apellidosautor") %>&nbsp;<% = rscatlist("nombreautor") %></h2>
<br>
<%=rscatlist("titulo") %>
<br>
<%
rscatlist.movenext

if not (rscatlist.eof) Then
%>
<%
rscatlist.movenext
end if
if not (rscatlist.eof) Then
%>
<br>
<font face="helvetica" size="2" color="<%= colortexto %>">
<%=rscatlist("titulo") %>
<br>
<%
rscatlist.movenext
end if%>
<%
wend
%>
<%
db.Close
set db = Nothing
%>
</body>
</html>
  #2 (permalink)  
Antiguo 21/10/2004, 03:00
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
SELECT autores.*, productos.*
FROM autores INNER JOIN productos ON (autores.idautor=productos.idautor2) Or (autores.idautor=productos.idautor1)


Prueba así.
  #3 (permalink)  
Antiguo 21/10/2004, 03:17
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Creo que tu consulta devuelve lo mismo que devolvia la mia, lo que ocurre es que sigue mostrando los libros para el idautor=1 (No existe realmente) y el despliegue de la tabla no la realizo correctamente!!
  #4 (permalink)  
Antiguo 21/10/2004, 03:35
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
select............where idautor<>1

pensaba que eso era evidente que había que ponerlo.
  #5 (permalink)  
Antiguo 21/10/2004, 03:53
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
¿Como desplegarias los datos para que te aparecira un autor y debajo todos los productos en los que ha participado independientemete de si iba como idautor o idautor2?
La consulta esta ahora mismo asi:
set rscatlist=db.Execute("SELECT autores.*, productos.* FROM autores INNER JOIN productos ON (autores.idautor=productos.idautor2) Or (autores.idautor=productos.idautor) where productos.idautor2<>1")
if rscatlist.eof then
else
idautor=rscatlist("idautor")
Nombreautor=rscatlist("Nombreautor")
apellidosautor=rscatlist("apellidosautor")
idproducto=rscatlist("idproducto")
titulo=rscatlist("titulo")

end if
%>
<%
while not rscatlist.eof
%><h2><% = rscatlist("apellidosautor") %>&nbsp;<% = rscatlist("nombreautor") %></h2>
<%=rscatlist("titulo") %>

<%
rscatlist.movenext

if not (rscatlist.eof) Then
%>
<%=rscatlist("titulo") %>
<%
rscatlist.movenext
end if
if not (rscatlist.eof) Then
%>
<br>
<font face="helvetica" size="2" color="<%= colortexto %>">
<%=rscatlist("titulo") %>
<br>
<%
rscatlist.movenext
end if%>
<%
wend
%>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.