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

necesito una consulta urgente

Estas en el tema de necesito una consulta urgente en el foro de Bases de Datos General en Foros del Web. tratare de resumir las tablas y consultas ke tengo para ke se entienda lo ke kiero: tengo una tabla "clientes" con campos: rut_cliente,nombre_cliente y una ...
  #1 (permalink)  
Antiguo 27/07/2004, 15:10
 
Fecha de Ingreso: junio-2004
Mensajes: 76
Antigüedad: 19 años, 10 meses
Puntos: 0
necesito una consulta urgente


tratare de resumir las tablas y consultas ke tengo para ke se entienda lo ke kiero:

tengo una tabla "clientes" con campos:rut_cliente,nombre_cliente y
una tabla "operaciones" con campos:num_operacion,rut_cliente,monto,estado

***el campo rut_cliente es el ke se tratara como clave foranea*****
pues bien, necesito una consulta ke contenga rut y nombre del cliente y la suma de el monto de operaciones ke tiene....

osea ke esta consulta: "select sum(monto) from operaciones where estado ='operacion'" sea un campo de la consulta "FINAL"

por ej. en la consulta me tendria ek mostrar: Luis Mendez, 13.233.675-0, 34.000(esto ultimo es la suma del campo monto....
ojala se haya entendido y me puedan ayudar GRACIASS DE ANTEMANOO

Última edición por Guachalin; 27/07/2004 a las 15:13
  #2 (permalink)  
Antiguo 27/07/2004, 16:10
 
Fecha de Ingreso: abril-2004
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
agrupa por rut y nombre
en Oracle seria algo asi:

SELECT c.rut, c.nombre, sum(o.monto)
FROM clientes c, operaciones o
WHERE c.rut_cliente = o.rut_cliente
GROUP BY c.rut, c.nombre;
  #3 (permalink)  
Antiguo 27/07/2004, 17:14
 
Fecha de Ingreso: junio-2004
Mensajes: 76
Antigüedad: 19 años, 10 meses
Puntos: 0
bueno, se me olvido algo, trabajo con sql server, otra cosa al compadre ke me respondio, esa consulta me agruparia por rut, y yo necesito ke se muestre todos los rut ke existan(osbiamente con su nombre y suma de monto respectiva),............ ............. otra ayudita plis

pd: la suma puedo restringirla asi como la consulta ke puse mas arriba

Última edición por Guachalin; 27/07/2004 a las 17:15
  #4 (permalink)  
Antiguo 27/07/2004, 17:45
Avatar de Atonovich  
Fecha de Ingreso: diciembre-2002
Ubicación: ...
Mensajes: 117
Antigüedad: 21 años, 4 meses
Puntos: 0
Te servirá esto???
select rut_cliente, nombre_cliente, sum(num_operacion) as monto_operaciones
from clientes inner join operaciones on clientes.rut_cliente = operaciones.rut_cliente
where nombre_cliente like '%algo%'
__________________
" El hombre es una invención de Dios o Dios es una invención del hombre..."
  #5 (permalink)  
Antiguo 28/07/2004, 15:14
 
Fecha de Ingreso: junio-2004
Mensajes: 76
Antigüedad: 19 años, 10 meses
Puntos: 0
no meeee sirvioo!!

intente con la siguiente consulta sakando algo de las ayudas:

Select Nombre_cliente,rut_cliente,estado,sum(monto) as suma_operacion from clientes inner join operaciones on clientes.rut_cliente = operaciones.rut_cliente where estado='operacion'

y me sale esto:

"Servidor: mensaje 209, nivel 16, estado 1, línea 1
El nombre de columna 'rut_cliente' es ambiguo."


ayudaa por favooor!!!

Última edición por Guachalin; 28/07/2004 a las 15:15
  #6 (permalink)  
Antiguo 28/07/2004, 20:41
 
Fecha de Ingreso: junio-2004
Ubicación: Stgo, Chile
Mensajes: 51
Antigüedad: 19 años, 10 meses
Puntos: 0
Cuando te dice que una columna es ambigua solo tienes que poner nom_tabla.nom_campo, en tu caso sería
Select Nombre_cliente,
clientes.rut_cliente,
estado,
sum(monto) as suma_operacion
from clientes
inner join operaciones on clientes.rut_cliente = operaciones.rut_cliente where estado='operacion'

Saludos,
Victoria
  #7 (permalink)  
Antiguo 29/07/2004, 06:45
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
Prueba con esto:

SELECT clientes.rut_cliente, clientes.nombre_cliente, cns.SMonto FROM clientes INNER JOIN (SELECT rut_cliente, sum(monto) AS SMonto FROM operaciones WHERE estado ='operacion' GROUP BY rut_cliente) cns ON clientes.rut_cliente=cns.rut_cliente
  #8 (permalink)  
Antiguo 29/07/2004, 13:25
 
Fecha de Ingreso: junio-2004
Mensajes: 76
Antigüedad: 19 años, 10 meses
Puntos: 0
Cita:
Iniciado por Atzeneta
Prueba con esto:

SELECT clientes.rut_cliente, clientes.nombre_cliente, cns.SMonto FROM clientes INNER JOIN (SELECT rut_cliente, sum(monto) AS SMonto FROM operaciones WHERE estado ='operacion' GROUP BY rut_cliente) cns ON clientes.rut_cliente=cns.rut_cliente
muchas gracias, lo habia hecho por el analizador de consultas y solo me mostraba rut y nombre, lo hice por una vista en el sql server y funciono...

GRACIAAAASSSS

Última edición por Guachalin; 29/07/2004 a las 13:32
  #9 (permalink)  
Antiguo 30/07/2004, 14:44
 
Fecha de Ingreso: junio-2004
Mensajes: 76
Antigüedad: 19 años, 10 meses
Puntos: 0
agradeciendo su ayuda me animo a preguntarles otra cosita, la consulta del ultimo amigo me resulto y me muestra el nombre rut y suma de operacion respectiva, pero hay algunos clientes ke no tienen operaciones y me gustaria ke mostrara de = forma el cliente con el campo suma sin ningun valor.....ya ke los clientes ke no tienen operacion no los muestra......

como tendria ke hacerlo en la ultima consulta ke me sirvio

  #10 (permalink)  
Antiguo 02/08/2004, 03:26
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
Esto se hace utilizando los argumentos de la cláusula FROM:

INNER JOIN: Especifica que se devuelven todos los pares de filas coincidentes. Descarta las filas no coincidentes de las dos tablas. Éste es el valor predeterminado si no se especifica ningún tipo de combinación.
LEFT JOIN: Especifica que todas las filas de la tabla izquierda que no cumplan la condición de combinación se incluyan en el conjunto de resultados, con las columnas de la otra tabla establecidas en NULL, además de todas las filas devueltas por la combinación interna.
RIGHT JOIN:Especifica que todas las filas de la tabla derecha que no cumplan la condición de combinación se incluyan en el conjunto de resultados, con las columnas de la otra tabla establecidas en NULL, además de todas las filas devueltas por la combinación interna.
CROSS JOIN: Especifica el producto resultante de dos tablas

Aplicando estos conceptos la consulta anterior, para mostrar todos los registros de la tabla clientes quedaría de la siguiente forma:

SELECT clientes.rut_cliente, clientes.nombre_cliente, cns.SMonto FROM clientes LEFT JOIN (SELECT rut_cliente, sum(monto) AS SMonto FROM operaciones WHERE estado ='operacion' GROUP BY rut_cliente) cns ON clientes.rut_cliente=cns.rut_cliente

Última edición por Atzeneta; 02/08/2004 a las 06:10
  #11 (permalink)  
Antiguo 02/08/2004, 14:49
 
Fecha de Ingreso: junio-2004
Mensajes: 76
Antigüedad: 19 años, 10 meses
Puntos: 0
MUCHAS, pero muchas gracias Atzeneta,
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 23:18.