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

Algo muy curioso

Estas en el tema de Algo muy curioso en el foro de ASP Clásico en Foros del Web. Hola. Tengo una página en la cual hago referencia a una base de datos con libros y resulta que al recorrer la tabla y al ...
  #1 (permalink)  
Antiguo 26/11/2004, 01:41
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años, 2 meses
Puntos: 0
Algo muy curioso

Hola. Tengo una página en la cual hago referencia a una base de datos con libros y resulta que al recorrer la tabla y al escribir los campos, me escribe en la página los registros duplicados, quiero decir me sale el autor1 y otra vez el 1 y luego el 2 y otra vez el 2,... una cosa muy curiosa porque no sé qué puede ser. Os muestro el código a continuación:

TamPagina = 10
CuantosRegistros=0
do while not rs.EOF and CuantosRegistros < TamPagina

Response.Write("<TR><TD ALIGN=LEFT VALIGN=TOP>"&rs.Fields("Id")&"-- "&rs.Fields("Autor")&"</FONT></TD></TR>")

CuantosRegistros=CuantosRegistros+1

rs.MoveNext
loop


Es decir me impreme en pantalla:

502-- ZAMORA
502-- ZAMORA
425--Alberto MORAVIA
425--Alberto MORAVIA
697--Alejandra RACHMANOVA
697--Alejandra RACHMANOVA
1023--Bertha HARRIS y Dr. Emily SISLEY
1023--Bertha HARRIS y Dr. Emily SISLEY
1953--EL CABALLERO AUDAZ
1953--EL CABALLERO AUDAZ

Duplicados!!! no sé porqué.
Alguien podría ayudarme por favor???
Gracias.
  #2 (permalink)  
Antiguo 26/11/2004, 04:48
 
Fecha de Ingreso: noviembre-2004
Ubicación: trelew - chubut
Mensajes: 134
Antigüedad: 19 años, 6 meses
Puntos: 0
primero revisa la base de datos y
asegurate que los registros
no estan duplicados
  #3 (permalink)  
Antiguo 26/11/2004, 12:19
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta a Flacoluis

Hola.
He comprobado lo que me has dicho y no hay duplicados de hecho repite la clave principal de una de las tablas.
Ya sé lo que es. Es mi sentencia SQL, que no sé porqué lo hace mal. Te la pongo a continuación a ver si me puedes ayudar:

SQL="SELECT DISTINCT * FROM Resultados, Librerias"

SQL = SQL & " WHERE titulo LIKE '%" & _
clau & "%' OR autor LIKE '%" & _
clau & "%' OR Resultados.descripcion LIKE '%" & _
clau & "%' AND Librerias.Codigo = Resultados.Id ORDER BY autor"


Tengo 2 tablas Resultados y Librerias. En Resultados guardo los libros y en Librerias las librerías, entonces tengo un campo en Resultados que me dice qué librería es.

Pues bien cuando le pongo la SQL de arriba me salen duplicados, sin embargo si le pongo:

SQL="SELECT DISTINCT * FROM Resultados"

SQL = SQL & " WHERE titulo LIKE '%" & _
clau & "%' OR autor LIKE '%" & _
clau & "%' OR descripcion LIKE '%" & _
clau & "%' ORDER BY autor"

No me salen repetidos es decir sale bien. Por eso en la anterior le puse DISTINCT pero no me hace caso.

En fin si puedes ayudarme te lo agradecería mucho.

Gracias y un saludo.
  #4 (permalink)  
Antiguo 26/11/2004, 13:26
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Prueba con:

SQL="SELECT DISTINCT * FROM Resultados inner join Librerias on Resultados.Id = Librerias.Codigo WHERE titulo LIKE '%" & _
clau & "%' OR autor LIKE '%" & _
clau & "%' OR Resultados.descripcion LIKE '%" & _
clau & "%' ORDER BY autor"
  #5 (permalink)  
Antiguo 27/11/2004, 02:29
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años, 2 meses
Puntos: 0
Exactamente era eso!!!!

Muchas gracias Myakire.
Sí que se ha arreglado con la sentencia SQL que me has dicho. Yo creía que con el DISTINCT ya se arreglaría pero no. Había que poner el inner join.
Muchas gracias. Te lo agradezco mucho.
  #6 (permalink)  
Antiguo 29/11/2004, 08:30
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
No tanto el problema era el inner join, como lo estabas haciendo antes también hubiera funcionado pero necesitabas parentizar la condición WHERE para que entrara con solo uno de los OR's y necesariamente el AND que manejabas.

Cuestión de formar la relación. Saludos.
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 01:51.