Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Dos tablas

Estas en el tema de Dos tablas en el foro de SQL Server en Foros del Web. Ayuda con una consulta... tengo 2 tablas que tiene informacion distinta FACTURAS y PAGOS_PARCIALES las dos tablas tiene el ID_CLIENTE pero no deben ser ligados ...
  #1 (permalink)  
Antiguo 15/03/2010, 20:30
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Dos tablas

Ayuda con una consulta...

tengo 2 tablas que tiene informacion distinta FACTURAS y PAGOS_PARCIALES las dos tablas tiene el ID_CLIENTE pero no deben ser ligados con INNER JOIN por que son movimientos diferentes, necesito consultarlas las dos al mismo tiempo para desplegar en un WHILE por que necesito en listar los dos mezcladas ordenadas por FECHA_PAGO lo he intentado asi:

SET MOVIMIENTOS = CreateObject("ADODB.Recordset")
SQL="SELECT * FROM FACTURAS, PAGOS_PARCIALES WHERE PAGOS_PARCIALES.ID_CLIENTE=757 AND FACTURAS.ID_CLIENTE=757
MOVIMIENTOS.Open SQL, CONN1,3,1


y lo que me regresa es la Multiplicacion de los Registros de las dos tablas 19 registros de PAGOS_PARCIALES por 43 FACTURAS me repite los resultados 817 veces

alguna idea? ya intente Distinct y los resultados no corresponden
  #2 (permalink)  
Antiguo 16/03/2010, 00:07
 
Fecha de Ingreso: octubre-2009
Mensajes: 26
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Dos tablas

no estoy totalmente seguro de que se pueda pero ya intentaste con un UNION??

select * from Facturas
Union
select * from Pagos_Parciales
  #3 (permalink)  
Antiguo 16/03/2010, 09:08
 
Fecha de Ingreso: enero-2010
Ubicación: SJM Lima - Peru
Mensajes: 55
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Dos tablas

Cita:
Iniciado por peynado Ver Mensaje
Ayuda con una consulta...

tengo 2 tablas que tiene informacion distinta FACTURAS y PAGOS_PARCIALES las dos tablas tiene el ID_CLIENTE pero no deben ser ligados con INNER JOIN por que son movimientos diferentes, necesito consultarlas las dos al mismo tiempo para desplegar en un WHILE por que necesito en listar los dos mezcladas ordenadas por FECHA_PAGO lo he intentado asi:

SET MOVIMIENTOS = CreateObject("ADODB.Recordset")
SQL="SELECT * FROM FACTURAS, PAGOS_PARCIALES WHERE PAGOS_PARCIALES.ID_CLIENTE=757 AND FACTURAS.ID_CLIENTE=757
MOVIMIENTOS.Open SQL, CONN1,3,1


y lo que me regresa es la Multiplicacion de los Registros de las dos tablas 19 registros de PAGOS_PARCIALES por 43 FACTURAS me repite los resultados 817 veces

alguna idea? ya intente Distinct y los resultados no corresponden

Segun tu consulta veo que al final estas igualando indices de 2 tablas diferentes
lo que quiero entender que el inner join no le estabas aplicando bien con un where al final

Código SQL:
Ver original
  1. SET MOVIMIENTOS = CreateObject("ADODB.Recordset")
  2. SQL="SELECT * FROM FACTURAS F INNER JOIN PAGOS_PARCIALES PP ON PP.ID_CLIENTE=F.ID_CLIENTE
  3. WHERE F.ID_CLIENTE=757 order by PP.FECHA_PAGO"
  4. MOVIMIENTOS.OPEN SQL, CONN1,3,1

Hay que entender que tipo de relacion existe entre ambas tablas FACTURAS y PAGOS_PARCIALES a simple vista parece ser de 0 a muchos.
asi que el join enviado te mostrara como 19 registros al estar en pagos_parciales pero si existiera varios pagos por factura este numero se reduciria.

Tambien puedes usar los LEFT , RIGHT OUTER JOIN que son buenos en funcion si los registros son de cantidades distintas en las tablas y hace mostrar la cantidad indicada segun el JOIN ya sea 19 o 43 registros.
Osea primero carga la informacion de la tabla A y despues une la informacion de la tabla B dejando por ende campos vacio segun quien sea A y B.
Bien con tu instanciamiento tardio.

www.bitxense.com.pe | Soluciones Informaticas S.A.C. - [email protected]
Cualquier duda soy Jhon Bautista Palomino aqui esta mi correo [email protected] Lima-Peru
  #4 (permalink)  
Antiguo 26/03/2010, 14:14
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Dos tablas

consultalas por separado, es decir

SET MOVIMIENTOS = CreateObject("ADODB.Recordset")

SQL="SELECT * FROM FACTURAS WHERE FACTURAS.ID_CLIENTE=757 GO SELECT * FROM , PAGOS_PARCIALES WHERE PAGOS_PARCIALES.ID_CLIENTE=757"
MOVIMIENTOS.Open SQL, CONN1,3,1

Eso te dara dos sets independientes... los recorres cada uno y ya.... aun que no entiendo lo que quieres hacer... :p


Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #5 (permalink)  
Antiguo 27/03/2010, 17:12
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Dos tablas

De nuevo gracias

Repondiendo a su pregunta.. de que es lo que quiero hacer... en resumen se trata de un estado de cuenta por cliente

En una lista poner a todos los cleitnes y conforme se impriman en pantalla se muestren tdos os pagos (tabla 1) y facturas (tabla 2) que han a cumulado los clientes

lo que se me complica es que hay que intercalarl los resultados por fecha

por ejemplo en Enero... el cliente pudo tener varias facturas y varios pagos necesito mostrarlos en en orden de fechas

espero haerme explicado

saludos
  #6 (permalink)  
Antiguo 29/03/2010, 09:18
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Dos tablas

Cuál es la pregunta? o quieres que hagamos tu trabajo?
Amigo tienes que presentar un problema concreto.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: dos, tablas
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 06:35.