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

Duda con datos repetidos

Estas en el tema de Duda con datos repetidos en el foro de Bases de Datos General en Foros del Web. Buenas a todos tengo un problema con una sentencia de SQL, string sql = "SELECT materiales.nom_material, materiales.precio_material, obras_materiales.cantidad FROM materiales, obras_materiales WHERE materiales.id_material=obras_materiales.id_materia l AND ...
  #1 (permalink)  
Antiguo 16/01/2010, 09:56
Jub
 
Fecha de Ingreso: enero-2010
Mensajes: 4
Antigüedad: 14 años, 3 meses
Puntos: 0
Pregunta Duda con datos repetidos

Buenas a todos

tengo un problema con una sentencia de SQL,

string sql = "SELECT materiales.nom_material, materiales.precio_material, obras_materiales.cantidad FROM materiales, obras_materiales WHERE materiales.id_material=obras_materiales.id_materia l AND obras_materiales.id_obra=('" + textBox6.Text + "')";

mi duda es, existe una forma de cambiar la sentencia para que los datos repetidos
como nom_material se reduzca a solo uno y que se sumen las cantidades relacionadas a ese campo?

Gracias!
  #2 (permalink)  
Antiguo 16/01/2010, 10:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda con datos repetidos

Código MySQL:
Ver original
  1.     M.nom_material,
  2.     SUM(M.precio_material) Importe,
  3.     SUM(M.cantidad) Cant_Unidades
  4.     materiales M INNER JOIN obras_materiales O ON M.id_material  = O.id_materia
  5.     O.id_obra = valorBuscado
  6. GROUP BY M.nom_material;
Donde valorBuscado representa el identificador de la obra seleccionada.

Nota esencial: Este es código para MySQL. Hay algunas distinciones en otros DBMS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/01/2010, 10:22
Jub
 
Fecha de Ingreso: enero-2010
Mensajes: 4
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda con datos repetidos

Gracias gnzsoloyo, pero la sentencia no me esta sirviendo, estoy usando SQL Server.

lo que busco es que los datos de nom_mat repetidos salgan una sola vez y
los datos de todos los datos en cantidades de los datos repetidos se sumen,
por ejemplo

Material Cantidad Precio
Manzana 10 2.00
Manzana 10 2.00
Manzana 10 2.00

me aparezca solo

Material Cantidad Precio
Manzana 30 2.00


Gracias!
  #4 (permalink)  
Antiguo 16/01/2010, 10:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda con datos repetidos

¿Lo probaste?, porque mira que respeta el ejemplo del manual de SQL server:

Código SQL:
Ver original
  1. SELECT SalesOrderID, SUM(LineTotal) AS SubTotal
  2. FROM Sales.SalesOrderDetail sod
  3. GROUP BY SalesOrderID
  4. ORDER BY SalesOrderID;
En todo caso, modifica el GROUP BY para adaptarlo a SQL Server. Fíjate en el manual: GROUP BY (Transact-SQL)
El resto del esquema que propongo es ANSI, por lo que debería funcionar.

Acuérdate siempre de especificar qué DBMS usas en esta sección. Para no tener que hacerlo, postea en la subsección SQL Server...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 16/01/2010, 11:45
Jub
 
Fecha de Ingreso: enero-2010
Mensajes: 4
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda con datos repetidos

Ya me funcionó! Gracias gnzsoloyo!
Solamente que los precios me los esta sumando y necesito que salga el precio por una sola pieza,
ya quite el SUM de precio_material y deja de funcionar.
Que puedo hacer?

Gracias
  #6 (permalink)  
Antiguo 16/01/2010, 14:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda con datos repetidos

Porque la regla de utilización dice que el GROUP BY debe llevar (en SQL Server) todos los campos no afectados por funciones agrupadas, es decir que debe incluir también el precio en cuestión:
Código SQL:
Ver original
  1. SELECT
  2.     M.nom_material,
  3.     M.precio_material Precio
  4.     SUM(M.cantidad) Cant_Unidades
  5. FROM
  6.     materiales M INNER JOIN obras_materiales O ON M.id_material  = O.id_materia
  7. WHERE
  8.     O.id_obra = valorBuscado
  9. GROUP BY M.nom_material, M.precio_material ;
Eso sale en el manual de referencia...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: repetidos
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 08:50.