FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Query con 3 tablas
Buenas Noches Amigos del Club...
Tengo un serio problema, estoy haciendo un sistemita que es para llevar remisiones (facturas), productos, clientes, etc, el problema esta en que estoy haciendo una pantalla donde tengo un dbgrid, ese dbgrid tiene que mostrarme ciertos campos. les explicare brevemente el proceso, cuando remisiono un producto o mas guardo la clave de cliente q remisiona, guardo la clave de producto, y la cantidad de producto, esto se guarda en detalle remision, ahora lo que quiero hacer es jalar en la pantalla, el nombre de cliente, su saldo, y la cantidad acumulada que ha sumado el cliente de todas sus remisiones, solo me tiene que mostrar la cantidad de ciertos productos (especificamente del 1 y 2) Les dire que tablas son con las que interactuo en esa pantalla. solo pondre los campos que necesitamos. Son 3 1. tabla --> Clientes (cvecli, razso(es el nombre), saldo) 2. tabla ---> Remisiones (cverem, cvecli) 3. tabla ---> Detalle_remision(cverem, cvepro(clave del producto), cantidad) Eh tratado de hacer querys pero no me sale, no eh podido, ya llevo un par de dias trabado en esto. lo estoy haciendo el delphi 6, ocupo un dbgrid que se conecta con su datasource y este a su dataset. Este query eh hecho, bueno de mucho y no me corre, me dice invalid column reference, solo si le quito los campos de de c.cvecli, c.razso, c.saldo, me corre pero solo me da la suma de la cantidad por cada remision. select cverem, sum(canti), c.cvecli, c.razso, c.saldo from remisiones r, detalle_remision d, clientes c where r.cverem = d.cverem and r.cvecli= c.cvecli group by cverem De antemano les agradezco su tiempo y sus comentarios. |
#2
|
||||
|
||||
Hola
Bienvenido al club. Tal vez asi: Saludos |
#3
|
|||
|
|||
No funciono..
Hola Caral, gracias por tu tiempo y tu respuesta pero tenemos malas noticias, no funciona, me sigue saliendo el mismo error cuando ejecuto el query en Ibexpert Invalid Column reference.
Pero de todas maneras te agradezco.. Buen Dia... |
#4
|
||||
|
||||
Hola,
Bien a bien no sé en qué radica el problema, pero en tu consulta original
la referencia al campo cvrem en group by es ambigua; puede ser la llave de la tabla remisiones o la llave foranea en la tabla detalle_remision. Quizá por ahí vaya el problema. // Saludos |
#5
|
|||
|
|||
Query
Si es ambigua por lo que vi, pero entonces como podria agruparlos, para que mi resultado fuera el requerido, porque si es por cvecli, tambien es ambigua.
Gracias |
#6
|
||||
|
||||
¿Has probado con d.cvrem? Y, por cierto, en el select pasa lo mismo.
// Saludos |
#7
|
|||
|
|||
Cita:
|
#8
|
||||
|
||||
Pudiera ser. Tienes sum(canti), pero en la descripción que das de tus tablas, el campo se llama cantidad.
// Saludos |
#9
|
||||
|
||||
Hola
Para seguir con esto, me parece: Ya que hay una suma de por medio tiene que haber un distinc de lo contrario no daria el total de la suma, el group by, tiene que acoplar el orden de la solicitud, ya que hay campos con nombres iguales. Saludos |
#10
|
|||
|
|||
Cita:
|
#11
|
|||
|
|||
Cita:
Gracias otra vez. |
#12
|
||||
|
||||
Hola
Usa DISTINC, es casi lo mismo, con esto lo que hace es buscar los que coincidan sin duplicarlos, pruebalo. El problema de la suma si persiste tal vez se solucione con un having. Saludos |
#13
|
|||
|
|||
Cita:
Este cliente tiene 2 remisiones y en cada remision tiene 2 productos, el resultado que yo necesito seria una fila, con su nombre y la suma de la cantidad de todos sus productos, eso ya lo sabes, el resultado del query al ponerle distinct me arroja 4 veces su nombre, y cada nombre con su respectiva cantidad del producto, osea no me los esta sumando, espero me haya dado a entender. Gracias |
#14
|
||||
|
||||
Hola
No se en sql, pero intenta last. Saludos |
#15
|
||||
|
||||
Hola.
Soy nuevo en el foro y al ver tu problema no pude evitar ayudarte con la consulta SQL. Por lo que pude entender del problema es que necesitas la suma total de la cantidad de productos que compro el cliente, para ello la consulta SQL seria como sigue:
Espero que mi aporte haya servido de ayuda, Saludos. |
#16
|
|||
|
|||
Solucionado
Cita:
|
#17
|
|||
|
|||
otro mas...
Oye amigo the flame necesito tu ayuda, es para el mismo query, yo quiero q solo sume la cantidad de los productos 1 y 2, la tabla se llama productos y su clave es cvepro y se relaciona con detalle_remision q tambien tiene el mismo nombre de campo q es cvepro, espero puedas ayudarme. y para el q pueda ayudarme son bien recibidos sus comentarios. gracias. |
#18
|
|||
|
|||
JOJOJO, ya pudee.. gracias de todas maneras, aqui esta el query que me funciono, solo le agrege 2 filitas mas.
Select Clientes.cvecli, Clientes.razso, Sum(Detalle_remision.canti) as Emulsion, Clientes.Saldo From Clientes Inner 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 |
#19
|
|||
|
|||
Aun mas del mismo query
Hola, oigan saben como hacer que me traiga todos los clientes, osea quiero todos los registros aunque el valor sea nulo, en especifico del mismo query que puse arriba que ustedes me ayudaron a hacerlo, el resultado es la suma de tods los clientes que han remisionado, pero solo me aparecen los que han comprado del producto 1 y 2, pero quiero que me aparezcan todos los clientes que hay en la tabla, aunque la suma sea Null, eh probado el LEFT JOIN, quite el INNER JOIN y lo probe pero no me resulto, me servirian muchos sus comentarios, muchas gracias!!
|
#20
|
||||
|
||||
Podria ser asi.
Cita:
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. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Imprimir resultado de 2 tablas con un Query | maravert | Impresión | 2 | 06-12-2006 17:57:59 |
Query entre dos tablas de distintas databases | tefots | Firebird e Interbase | 2 | 06-11-2006 15:28:29 |
nombre de las tablas en un query | ercrizeporta | Conexión con bases de datos | 2 | 28-09-2006 17:30:46 |
Query a Tablas Paradox | pelaorb68 | Conexión con bases de datos | 0 | 13-01-2006 23:25:25 |
Query con tablas temporales | cartmanrules | Firebird e Interbase | 4 | 27-05-2004 10:23:47 |
|