SQL - Duda sql

 
Vista:

Duda sql

Publicado por gorelev (7 intervenciones) el 29/05/2007 12:39:10
Tengo una duda en sql

Imaginaros la siguiente tabla

nº de piezas ---------- nombre ------ precio (euros) --------------- estado

1 zapato 5 bueno
1 zapato 15 malo
1 sombrero 12 bueno
1 sombrero 14 bueno

Lo que quiero es una consulta que me muestre lo siguiente:

las piezas totales (buenas y malas),el nombre y las suma de los precios buenos

Por ejemplo seria algo asi lo que me tendria que mostrar:

2---------------------------zapato-------------------5
2-------------------------sombrero----------------26
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda sql

Publicado por Isaías (5072 intervenciones) el 29/05/2007 17:20:46
¿Cual es el problema?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por gorelev (7 intervenciones) el 29/05/2007 19:12:53
¿Pues que como seria la consulta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por Isaías (5072 intervenciones) el 29/05/2007 19:33:22
gorelev

Comunmente la gente no viene a los foros a pedir que se les realice LA CONSULTA COMPLETA, simplemente, vienen y exponen dudas, sobre el manejo de las bases de datos, ¿Ya intentaste hacer tu consulta?,¿Que nivel de SQL tienes?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por gorelev (7 intervenciones) el 29/05/2007 20:17:08
esta es una pequeña consulta de una más compleja que tengo intencion de hacer.
Sabia algo de sql hace un par de años. Por lo menos mejor que ahora ^^. Pero tanto tiempo sin usarlo hace que te olvides.
He intentado hacer lo que pregunto poniendo subconsultas.
El problema de esto que pregunto radica en que

yo quiero mostrar lo que pongo en el ejemplo en una sola consulta.

El problema es que yo quiero mostrar

en este caso quiero mostrar por ejemplo

Yo en este caso quiere mostrar el nºde piezas total y los precios buenos

Si yo pongo un select nºdepiezas, precios from tabla_ejemplo where precios='buenos' me va a mostrar el nº de piezas y los precios buenos. Me va a coger la restriccion de precios buenos tambien para el nº de piezas y eso no quiero que lo haga.
Estoy leyendo documentacion en sql y haciendo ejemplos sencillos para acordarme de lo que sabia o por lo menos de una parte. Solo lo pregunto por mera curiosidad.
No se no me voy a acordar de todo de golpe de un dia para otro. Por estoy leyendo documentacion de esta pagina y es de bastante ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por gorelev (7 intervenciones) el 29/05/2007 20:21:30
No se, sino me ayuda nadie, seguramente despues de darle un par de vueltas dare con lo que quiero.
Posiblemente sea una chorrada pero bueno. Ya caere luego. No queria rayarme mucho y por eso preguntaba ^^.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por Isaías (5072 intervenciones) el 30/05/2007 00:39:02
Si explicas TODO ESTO en tu primera posta, nos evitas los interrogatorios, muchas veces vienen por aqui alumnos de informatica pidiendo casi casi que se les resuelva la tarea, una vez explicado:

nº de piezas ---------- nombre ------ precio (euros) --------------- estado

1 zapato 5 bueno
1 zapato 15 malo
1 sombrero 12 bueno
1 sombrero 14 bueno

Lo que quiero es una consulta que me muestre lo siguiente:

las piezas totales (buenas y malas),el nombre y las suma de los precios buenos

Por ejemplo seria algo asi lo que me tendria que mostrar:

2---------------------------zapato-------------------5
2-------------------------sombrero----------------26

SELECT
Nombre,
SUM(Piezas),
x.Precio
FROM Tutabla JOIN
(SELECT Nombre, SUM(precios) from Tutabla WHERE estado = 'buenos' GROUP BY Nombre) as X ON Tutabla.Nombre = X.Nombre
GROUP BY Nombre, X.Precio

Dime si te funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por gorelev (7 intervenciones) el 30/05/2007 11:09:17
Me sale lo siguiente:

Servidor: mensaje 8155, nivel 16, estado 2, línea 11
No se ha especificado ninguna columna para la columna 2 de 'x'.

Estoy haciendo pruebas con la consulta y creo que es parecido a como tu me dices en el ejemplo.
Aun lo acabo de probar ahora asi que igual hay algun error por mi parte.
Por lo que estoy viendo no me coge el valor cuando pongo la funcion sum(precios) dentro de la subconsulta de despues del join. Lo que me muestra no es exactamente como lo quiero.
Gracias tio ya indagare. Cuando me salga justo lo que quiero pongo otro mensaje aqui.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por gorelev (7 intervenciones) el 30/05/2007 11:54:52
Tambien estoy viendo que el primer select coge para todos los campos la misma condicion de la subconsulta.
Cuando lo que quisiera es que en el primer select un campo me muestre una condicion y otro campo me muestre otra. No se si me habre explicado bien.
Espero que si ^^..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por Isaías (5072 intervenciones) el 31/05/2007 00:57:22
Gracias DALSOM

SELECT
Nombre,
SUM(Piezas),
x.Precio
FROM Tutabla JOIN
(SELECT Nombre, SUM(precios) AS Precio from Tutabla WHERE estado = 'buenos' GROUP BY Nombre) as X ON Tutabla.Nombre = X.Nombre
GROUP BY Nombre, X.Precio

No le pongo el MAX(x.Precio), porque en el subselect solo suma los "BUENOS"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Duda sql

Publicado por DALSOM (195 intervenciones) el 30/05/2007 21:40:29
SEGUN LO QUE VEO PONE ISAIAS, SOLO TE FALTA DECIDIR CUAL DE LOS NOMBRES EN EL RESULTADO ES EL QUE DEBE ESCOGER LA CONSULTA. ESTO OCURRE CUANDO USAS FUNCIONES MIN O MAX.
TRATA ASI,

SELECT
MAX(Nombre) AS nombre,
SUM(Piezas) as piezas,
max(x.Precio) as precio
FROM Tutabla JOIN
(SELECT Nombre, SUM(precios) from Tutabla WHERE estado = 'buenos' GROUP BY Nombre) as X ON Tutabla.Nombre = X.Nombre
GROUP BY Nombre, X.Precio

AUNQUE COMO DICES, PUEDE SER UNA CHORRADA, PUEDE QUE ESA CHORRADA SOLO SEA VISIBLE DESDE OTRO PUNTO DE VISTA, POR LO CUAL NECESITES LA AYUDA DE ALGUIEN MAS. ME PASA DE VEZ EN CUANDO.

SALUDOS,
DALSOM.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por gorelev (7 intervenciones) el 31/05/2007 09:49:42
Al final para que me saliera justo lo que queria cree un campo mas al que por medio de un update le envie lo que necesitaba.
Luego mediante una consulta normal ya mostraba lo que queria.
Se que es un arreglo facil pero seguire intentando mediante la forma en la que me dijisteis. Estoy probando por sql server 7 y me salian unos cuantos errores que ya tratare de subsanar porque no me gusta crear campos imnecesarios
Gracias a los dos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por Isaías (5072 intervenciones) el 31/05/2007 19:54:02
Por aca decimos que hay muchas formas de matar un alacran, algunas buenas, otras malas, pero al final, el bicho se muere.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por Mike (8 intervenciones) el 08/06/2007 21:35:48
Entre Isaias y DALSOM, creo que se han complicado mas de lo normal.
Bueno, vamos a ver si esto es mas entendible.

usando la tabla
#productos ( piezas int , nombre varchar(20), precio int , estado varchar(20) )

esta sería la query

SELECT cantidad = COUNT(*)
, nombre
, precio = SUM(CASE WHEN estado = 'bueno' THEN precio ELSE 0 END)
FROM #productos
GROUP BY nombre


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sql

Publicado por Mike (8 intervenciones) el 08/06/2007 21:42:53
un pequeño detalle.
me falto sumar las unidades.
Aca va una query, que segun la cantidad de piezas te suma sus precios.


SELECT cantidad = SUM(piezas)
, nombre
, precio = SUM(CASE WHEN estado = 'bueno' THEN piezas * precio ELSE 0 END)
FROM #productos
GROUP BY nombre


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar