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

Comparar 2 recordset's.

Estas en el tema de Comparar 2 recordset's. en el foro de ASP Clásico en Foros del Web. Buenas, Sres como comparar 2 recordset hechos con 2 sql sobre una misma consulta, de manera que el registro del campo comun que ambos recordset ...
  #1 (permalink)  
Antiguo 14/10/2005, 08:40
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
Pregunta Comparar 2 recordset's.

Buenas, Sres como comparar 2 recordset hechos con 2 sql sobre una misma consulta, de manera que el registro del campo comun que ambos recordset contienen se muestren por pantalla?


Saludos.
__________________
Carlunchos
  #2 (permalink)  
Antiguo 14/10/2005, 09:28
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
Sql="...Where campocomun ="& rst2("campocomun") &""
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #3 (permalink)  
Antiguo 14/10/2005, 09:54
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
mmmm, creo que es mejor:

sql = "select Tabla1.CampoComun from Tabla1 inner join Tabla2 on Tabla1.CampoComun = Tabla2.CampoComun"
  #4 (permalink)  
Antiguo 14/10/2005, 10:03
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
mmmm, si si se refiere a una misma BD, si son 2 BD, es mejor la mia...
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #5 (permalink)  
Antiguo 14/10/2005, 11:29
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
GRacias por responder. Myakire te recuerdo que de donde se sacan los datos es una unica tabla, con lo cual Tabla2 a que referencia?. Deberia poner algo como :

sql = "Select * From Consulta1 as tabla1, Consulta1 as tabla2 ..... inner join Tabla2 on Tabla1.CampoComun = Tabla2.CampoComun"

O es una burrada?.

Saludos.
__________________
Carlunchos
  #6 (permalink)  
Antiguo 14/10/2005, 11:36
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
ahora no entiendo nada....
puede haber alguna razon de tener 2 recorset en una misma tabla?
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #7 (permalink)  
Antiguo 14/10/2005, 11:36
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
necesitas compararlos para imprimir los que son iguales????? o para ?????
__________________
JuanRa Pérez
San Salvador, El Salvador
  #8 (permalink)  
Antiguo 14/10/2005, 12:18
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
La tabla es + o - asi:
tabla Consulta1
nombreCalles | nro_mz
--------------------------
Varela | 1845
Lujambio | 2547
Alcorta | 1845

En cajaTexto1 ingreso Varela y en cajaTexto2 ingreso Alcorta, de esta manera, al recuperar estos valores necesito armar un sql.
Con lo cual puedo suponer que Varela y Alcorta hacen esquina. Con esto, lo que necesito es mostrar por pantalla el numero de manzana que es comun a ambas calles.
Se entiende mejor?.
__________________
Carlunchos
  #9 (permalink)  
Antiguo 14/10/2005, 12:19
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
Cita:
Iniciado por carlunchos
GRacias por responder. Myakire te recuerdo que de donde se sacan los datos es una unica tabla, con lo cual Tabla2 a que referencia?.
¿me recuerdas?, a caray, ¿pues cuando me lo dijiste?, veamos ....

Cita:
Buenas, Sres como comparar 2 recordset hechos con 2 sql sobre una misma consulta, de manera que el registro del campo comun que ambos recordset contienen se muestren por pantalla?
una consulta puede formarse por X tablas.

Ahora, yo si debo recordarte que si tienes 2 RecordSet que contienen todos los registros de una misma tabla, pues TODOS los campos son comunes (vamos, pues por que son la misma tabla), entonces como ya mencionaron, no tengo idea de que sea lo que pretendes. Si te explicas un poco más, seguro encontraremos algo que te sirva.

Saludos
  #10 (permalink)  
Antiguo 14/10/2005, 12:22
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
aaaaahhhh, acabo de leer que es lo que pretendes. Entonces haz esto:

sql = "select * from Tabla1 inner join (select * from Tabla1) Tabla2 on Tabla1.CampoComun = Tabla2.CampoComun"

Y listo. Vas a relacionar una tabla con si misma.

Saludos
  #11 (permalink)  
Antiguo 14/10/2005, 12:34
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
No entiendo es como un cross join?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 14/10/2005, 13:03
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
ahora creo haberte entendido yo tambien, tienes en una misma tabla, DIRECCIONES, entonces en un formulario el cliente pone:
mi direccion esta ...; entre VARELA y ALCORTA...

Sql ="Select * from tabla where nombredecalles = '"&request.form("dato1")&"' and num="&request.form("datonum")&""

Variable1 = rst("nombredecalle")
Variable2.....

Rst.close

'Vuelves a hacer la consulta pero ahora con el segundo dato....

Sql ="Select * from tabla where nombredecalles = '"&request.form("dato2")&"' and num="&request.form("datonum")&""

variables3 = bla,bla,....

bueno ahi tienes los datos extraidos...
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #13 (permalink)  
Antiguo 14/10/2005, 14:22
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
Cita:
Iniciado por u_goldman
No entiendo es como un cross join?
mmmm, pues algo así......, mira supongo que esto es exactamente la consulta que él necesita:

SELECT a.Campo1, b.Campo1, a.Campo2
FROM (select * from tabla1 where Campo1 = "Varela") a inner join (select * from tabla1 where Campo1 = "Alcorta") b on a.campo2 = b.campo2

Esto es fácil en concepto. Mira master, él dijo:

Cita:
En cajaTexto1 ingreso Varela y en cajaTexto2 ingreso Alcorta, de esta manera, al recuperar estos valores necesito armar un sql.
Con lo cual puedo suponer que Varela y Alcorta hacen esquina. Con esto, lo que necesito es mostrar por pantalla el numero de manzana que es comun a ambas calles.
¿cómo vex?

PD. Es viernes pero supongo que funcionará
  #14 (permalink)  
Antiguo 14/10/2005, 14:28
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98


Con lo cual puedo suponer que campo1 es la calle principal, campo2 la calle con la cual hace esquina?

Pero una calle puede hacer esquina con muchas calles incluso si es una manzana, una calle puede hacer esquina con una o dos calles...


Quizas el modelo de DB no es optimo?


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #15 (permalink)  
Antiguo 14/10/2005, 14:35
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
Campo1 es la calle y campo2 es la manzana ("el numero de manzana que es comun")

Con esa consulta se obtienen todas las manzanas que, en este ejemplo, "Varela" y "Alcorta" tienen la misma manzana, una, dos, tres, las que tengan en común.

Si es óptimo o no, pues ahí si ya no se con solo esta información.

ya vámonos, ya casi es hora de salir, jejeje

Viernes de quincena .....aaayy Dios mio
  #16 (permalink)  
Antiguo 14/10/2005, 14:59
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
[OFF-TOPIC]
Ahi vas como todas las quincenas, y al rato ya no hay para comer verdad???

Esta manana mi refrigerador tenia un pedazo de queso podrido y un six de Heineken

Ninos, no imiten esto...
[/OFF-TOPIC]
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #17 (permalink)  
Antiguo 18/10/2005, 06:47
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
Buenas Sres, no respondia por estar en modo prueba. Gracias por levantar la inquietud. Gracias a todos.

Si bien no da error tampoco arroja registros, siendo que Varela y Alcorta hacen esquina (es un dato concreto).

sql_calles = "SELECT a.NOM_CALLE, b.NOM_CALLE, a.nro_mz FROM (select * from Consulta1 where NOM_CALLE = '"&Calle1&"') a inner join (select * from Consulta1 where NOM_CALLE = '"&Calle2&"') b on a.nro_mz = b.nro_mz"
rst10.Open sql_calles, conBaseSur,3,1,1

donde NOM_CALLE es el campo que contiene los nombres de calles, nro_mz es el numero de manzana, Consulta1 es de donde se sacan los datos y conBaseSur es la variable que contiene el string de conexion.

Para aclarar un poco mas casi siempre se van a ingresar dos calles que hacen esquina, con lo cual lo que se espera es que se imprima el numero de manzana que tiene por laterales esas 2 calles.

Alguna sugerencia mas?.

Saludos
__________________
Carlunchos
  #18 (permalink)  
Antiguo 18/10/2005, 07:08
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
Pues me tomé la molestia de crear la BD con una tabla con algunos registros que se asemejan a los que colocaste anteriormente y por supuesto que regresa registros que coinciden.

Habrías de revisar qué es lo que se genera en la variable sql_calles y ejecutarlo directamente en la BD's
  #19 (permalink)  
Antiguo 18/10/2005, 07:13
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
si el sql de Myakire es correcto entonces has un response.write al sql para ver que es lo que arroja...

response.write sql_calles
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #20 (permalink)  
Antiguo 18/10/2005, 07:21
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
La impresion del sql es:

SELECT a.NOM_CALLE, b.NOM_CALLE FROM (select * from Consulta1 where NOM_CALLE = 'VARELA') a inner join (select * from Consulta1 where NOM_CALLE = 'ALCORTA') b on a.nro_mz = b.nro_mz

y al imprimir rst.RecordCount:

0 (cero)

Seguramente le pifio en la posicion de los campos en el sql.
__________________
Carlunchos
  #21 (permalink)  
Antiguo 18/10/2005, 07:50
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
mmm, no lo sé, si el record count te arroja cero eso ya es algo tambien, por lo general al no encontrar nada te arroja -1.

Ahora lo que intentas rescatar es el numero de calle que se asocia a ambos calles, pero curiosamente no lo pides en el SQL, lo comparas pero no lo rescatas, no se si me explico... será eso?
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #22 (permalink)  
Antiguo 18/10/2005, 08:02
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
Univercity, lo que quiero rescatar es justamente el num de manzana que se asocia con ambas calles, por eso digo que no se como indicarlo en el sql. Como deberia reformular el sql para lograr eso?.
__________________
Carlunchos
  #23 (permalink)  
Antiguo 18/10/2005, 08:52
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
y porque no pruebas asi...

SELECT a.NOM_CALLE, a.nro_mz, b.NOM_CALLE FROM (select * from Consulta1 where NOM_CALLE = 'VARELA') a inner join (select * from Consulta1 where NOM_CALLE = 'ALCORTA') b on a.nro_mz = b.nro_mz
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #24 (permalink)  
Antiguo 18/10/2005, 11:27
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
No, sigue dando cero. Probe cambiando de lugar los campos y nada. Creo que necesitamos un especialista en SQL.
__________________
Carlunchos
  #25 (permalink)  
Antiguo 18/10/2005, 13:40
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
solo por pura y simple curiocidad ...... ¿puedes colocar una imagen del contenido de la tabla en cuestion? o si no es mucha molestia, o mejor aún ¿puedes postearla? (puedes hacer una BD con solo esta tabla y mándarme la dirección por privado si no quieres mostrarla)

Saludos
  #26 (permalink)  
Antiguo 19/10/2005, 05:39
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
Myakire, estando ahora en el laburo no puedo hacerlo , seria esta tarde (hora de Brasil), pero si nos ayuda pongo nuevamente el esquema de la tabla en question:

Tabla: Consulta1

NOM_CALLE | nro_mz | seccion
-------------------------------
ALCORTA | 0236 | FLORIANOPOLIS
ALCORTA | 0568 | FLORIANOPOLIS
VARELA | 0236 | FLORIANOPOLIS
VARELA | 1254 | FLORIANOPOLIS
SAN JUAN | 0458 | FLORIANOPOLIS
LARRETA | 0458 | FLORIANOPOLIS

ETC ETC ETC

Cuando ingreso las dos variables (Calle1=Varela y Calle2=Alcorta) envio estos datos para armar la consulta, el sql levantaria todas los nro_mz que tengan como calle Varela y todos los nro_mz que tengan como calle Alcorta, luego de alguna manera comparar esos nro_mz entre si y mostrar solo el nro_mz que tenga comunes ambas calles , en este caso seria nro_mz=0236.
Parece un poco complicado y por eso hablaba en un principio de generar 2 recordset y luego compararlos entre si con lo cual habria que usar vectores y eso ya excede mis conocimientos.

Alguna sugerencia Sres?.
__________________
Carlunchos
  #27 (permalink)  
Antiguo 19/10/2005, 06:53
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
Pues como te he comentado, el query que te propuse funciona ok. Subi temporalmente en imagen la estructura, el contenido, la consulta (que copié de tu mensaje y solo cambie la tabla) y el resultado.

Mira, no es necesadad a que uses una consulta para algo que podrías hacer con dos RecordSet y hagas múltiples llamadas a la BD registro a registro buscando coincidencias, pero sinceramente no creo que sea la mejor solución. Podrías en su lugar generar los dos arreglos que mencionas (GetRows) y hacer las búsquedas ya no en la BD's, sino en el IIS, ahora si que ya es a tu elección. El query funciona y ahí esta la prueba.

Ahora, quizá si con todo decides intentarlo con arreglos, pues es tan sencillo como dos for's anidados o quizá el uso del filter, el cual te regresa un arreglo con las coincidencias encontradas de un string en otro arreglo.

Bueno, ya la elección de solución es tuya, elige una, prueba y ya te ayudaremos con los detalles de la que escojas.

Saludos
Imágenes Adjuntas
Tipo de Archivo: jpg Select.jpg (61,7 KB (Kilobytes), 3 visitas)
  #28 (permalink)  
Antiguo 19/10/2005, 13:06
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
Myakire, estoy por tirar la toalla, he probado nuevamente con tu sugerencia y me tira RecordCount = 0 y me desorienta. Y vos decis que funciona, lo cual creo. Pero bueno, seguire probando.

GRacias a todos por intervenir.
__________________
Carlunchos
  #29 (permalink)  
Antiguo 20/10/2005, 06:38
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
hijoles, pues ya en ese momento, soy yo el que no cree que no te funcione, jejeje, ¿por que no me pasas tu tabla y probamos ya con datos reales?
  #30 (permalink)  
Antiguo 20/10/2005, 06:59
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
Si quieres tambien pasamela a mí, creo que mi primera solucion tambien es valida y me gustaría demostrarlo....

[email protected]

Slds.
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
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 13:32.