Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Query con 3 tablas (https://www.clubdelphi.com/foros/showthread.php?t=46336)

Vichomo 31-07-2007 21:01:19

sigue el mismo resultado
 
Cita:

Empezado por TheFlame
Hola, me alegra que mi aporte te sirviera.
Para que obtengas todos los registros de tu tabla Clientes tendrías que hacer los Joins con Right o Left, a mí parecer debería funcionar con Right, la consulta llegaría a ser de la siguiente forma:


Código SQL [-]Select Clientes.cvecli, Clientes.razso, Sum(Detalle_remision.canti) as Emulsion, Clientes.Saldo

Código SQL [-]
From Clientes Right Join Remisiones On Clientes.cvecli=Remisiones.cvecli
Inner join Detalle_remision on Remisiones.cverem=Detalle_remision.cverem
inner join productos on detalle_remision.cvepro=productos.cvepro
where detalle_remision.cvepro=1 or detalle_remision.cvepro=2
Group By Clientes.cvecli, Clientes.razso, Clientes.Saldo




Nota: Solo el cambio fue en el primer Join, porque queremos mostrar todos los resultados de la tabla Clientes si es que no funciona con Right cámbialo por Left

Saludos.:rolleyes:

Oie amigo, no funciono, lo cambie por Left y tampoco funciono, que estara mal?

TheFlame 31-07-2007 22:22:28

Ups..
 
Ups. Te ruego que me disculpes por olvidar colocar una palabra más en la consulta. La cual quedaría como sigue:

Código SQL [-]
Select Clientes.cvecli, Clientes.razso, Sum(Detalle_remision.canti) as Emulsion, Clientes.Saldo
From Clientes  Right Outer Join Remisiones On Clientes.cvecli=Remisiones.cvecli
Inner join Detalle_remision on Remisiones.cverem=Detalle_remision.cverem
inner join productos on detalle_remision.cvepro=productos.cvepro
where detalle_remision.cvepro=1 or detalle_remision.cvepro=2
Group By Clientes.cvecli, Clientes.razso, Clientes.Saldo

Espero que esta si te de el resultado que esperas.:o
Saludos.

Vichomo 01-08-2007 05:22:53

Cita:

Empezado por TheFlame
Ups. Te ruego que me disculpes por olvidar colocar una palabra más en la consulta. La cual quedaría como sigue:

Código SQL [-]Select Clientes.cvecli, Clientes.razso, Sum(Detalle_remision.canti) as Emulsion, Clientes.Saldo From Clientes Right Outer Join Remisiones On Clientes.cvecli=Remisiones.cvecli Inner join Detalle_remision on Remisiones.cverem=Detalle_remision.cverem inner join productos on detalle_remision.cvepro=productos.cvepro where detalle_remision.cvepro=1 or detalle_remision.cvepro=2 Group By Clientes.cvecli, Clientes.razso, Clientes.Saldo


Espero que esta si te de el resultado que esperas.:o
Saludos.

:confused: Que crees amigooo ???? Nada, me sigue dando el mismo resultado, no hay diferencia alguna solo poniendole inner join, o left join, o right join, o right outer join o left outer join, me urge, que sera mi amigo?

TheFlame 01-08-2007 17:04:08

¿Con que motor de base de datos estas Trabajando?
la ultima consulta que te mande funciona con SQL Server 2000.
Saludos.

Vichomo 01-08-2007 20:20:58

Cita:

Empezado por TheFlame
¿Con que motor de base de datos estas Trabajando?
la ultima consulta que te mande funciona con SQL Server 2000.
Saludos.

Trabajo con Interbase 6, pero fijate que si sirve el Rigth Outer Join, porque lo he hecho en otras consultas menos complicadas y si me trae campos nulos, pero en esta no. porque sera, agradezco tu ayuda...

TheFlame 01-08-2007 21:55:19

Amigo “Vichomo”, te cuento que en esto de ir aprendiendo, aprendí algo mas respecto a consultas SQL. :p
Lo que tenemos que hacer para obtener un resultado determinado con las consultas como en este caso es: primero obtener los Inner Joins de las tablas Productos, Detalle_Remisiones y Remision para luego utilizar el Left o Right Outer con la tabla Clientes, quedaría mas o menos así:

Código SQL [-]
Select Clientes.cvecli, Clientes.razso, Sum(Detalle_Remision.canti) as Emulsion, Clientes.Saldo
From ((Detalle_Remision Inner Join Productos On Detalle_Remision.cvepro=Productos.cvepro) 
Inner Join Remisiones On Remisiones.cverem=Detalle_Remision.cverem)
Right Outer Join Clientes On Remisiones.cvecli=Clientes.cvecli
Where Detalle_Remision.cvepro=1 or Detalle_Remision.cvepro=2
Group By Clientes.cvecli,Clientes.razso,Clientes.Saldo

Espero que esta vez si te sea de ayuda.:p
¡Saludos… y suerte!;)

Vichomo 02-08-2007 00:11:15

Mala suerte TheFlame, sigue el mismo resultado... :(

TheFlame 02-08-2007 15:55:02

Espero esta si sea
 
Te propongo que vayamos paso a paso para detectar en que Join es que la consulta no funciona.
Primero probamos así:

Código:


Select Clientes.cvecli,Clientes.razso,Clientes.saldo
From Clientes Right Outer Join Remisiones On Clientes.cvecli=Remisiones.cvecli
Group By Clientes.cvecli,Clientes.razso,Clientes.Saldo

Debería mostrarte a todos los clientes.
Segundo: hacemos el Join con Detalle_Remisiones

Código:


Select Clientes.cvecli,Clientes.razso,Sum(Detalle_Remisiones.canti) as Emulsion,Clientes.saldo
From (Remisiones Inner Join Detalle_Remision On Remisiones.cverem=Detalle_Remision.cverem)
Right Outer Join Clientes On Remisiones.cvecli= Clientes.cvecli
Group By Clientes.cvecli,Clientes.razso,Clientes.Saldo

Debería seguir mostrándote a todos los clientes.
Tercero: hacemos el filtrado

Código:


Select Clientes.cvecli,Clientes.razso,Sum(Detalle_Remision.canti) as Emulsion,Clientes.saldo
From (Remisiones Inner Join Detalle_Remision On Remisiones.cverem=Detalle_Remision.cverem)
Right Outer Join Clientes On Remisiones.cvecli= Clientes.cvecli
Where Detalle_Remision.cvepro=1 or Detalle_Remision.cvepro=2
Group By Clientes.cvecli,Clientes.razso,Clientes.Saldo

Espero me comentes como te fue.:)
Saludos.

Vichomo 02-08-2007 19:45:49

nada, pero lo resolvi de otra manera
 
Cita:

Empezado por TheFlame (Mensaje 219533)
Te propongo que vayamos paso a paso para detectar en que Join es que la consulta no funciona.
Primero probamos así:

Código:


Select Clientes.cvecli,Clientes.razso,Clientes.saldo
From Clientes Right Outer Join Remisiones On Clientes.cvecli=Remisiones.cvecli
Group By Clientes.cvecli,Clientes.razso,Clientes.Saldo

Debería mostrarte a todos los clientes.
Segundo: hacemos el Join con Detalle_Remisiones

Código:


Select Clientes.cvecli,Clientes.razso,Sum(Detalle_Remisiones.canti) as Emulsion,Clientes.saldo
From (Remisiones Inner Join Detalle_Remision On Remisiones.cverem=Detalle_Remision.cverem)
Right Outer Join Clientes On Remisiones.cvecli= Clientes.cvecli
Group By Clientes.cvecli,Clientes.razso,Clientes.Saldo

Debería seguir mostrándote a todos los clientes.
Tercero: hacemos el filtrado

Código:


Select Clientes.cvecli,Clientes.razso,Sum(Detalle_Remision.canti) as Emulsion,Clientes.saldo
From (Remisiones Inner Join Detalle_Remision On Remisiones.cverem=Detalle_Remision.cverem)
Right Outer Join Clientes On Remisiones.cvecli= Clientes.cvecli
Where Detalle_Remision.cvepro=1 or Detalle_Remision.cvepro=2
Group By Clientes.cvecli,Clientes.razso,Clientes.Saldo

Espero me comentes como te fue.:)
Saludos.

Hola TheFlame, mira no funciono, pero ya despues de tanto me fui a lo mas tradicional o facil, puse en mi pantalla dos botones uno que me muestra los clientes con emulsion, y otro donde me muestre todos los clientes, talvez no esta un tanto automatizado, pero es urgente y no quedo de otra, gracias por todo de todas maneras!!

Saludos...

Enan0 02-08-2007 20:12:24

a ver!! mira intentre traducirlo a un SQL CLASICO!, ya que el LEFT join y right join no los manejo muy bien!
Bueno sin conocer la estructura de las tablas.. a ver si esto funca!!

Código:

Select Clientes.cvecli, Clientes.razso, Sum(Detalle_Remision.canti) as Emulsion, Clientes.Saldo
From Detalle_Remision, Productos  ,Remisiones,Clientes
Where Detalle_Remision.cvepro=1 or Detalle_Remision.cvepro=2
and Detalle_Remision.cvepro=Productos.cvepro and  Remisiones.cvecli=Clientes.cvecli
Group By Clientes.cvecli,Clientes.razso,Clientes.Saldo

Si no Pasame una pequeña descripcion de las tablas (los cambios que deberian Relacionarse) y te doy una mano haciendolo asi.

saludos


La franja horaria es GMT +2. Ahora son las 20:49:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi