SQL - realizar una consulta

   
Vista:

realizar una consulta

Publicado por kriss (3 intervenciones) el 01/09/2010 19:09:38
hola a todos: tengo la siguiente tabla

nombre------------cantidad
/fotos/xx-------------3
/fotos/yy-------------7
/video/ssss--------------2
/fotos/zzz-------------1
/video/xxx----------------10
/video/yyy----------------5
/video/ssss---------------4
/video/xxx-----------------12
/video/qqqq--------------6
/fotos/xx---------------8

despues de una consulta necesito obtener los siguientes resultados

fotos----------------------19
video/ssss----------------6
video/xx-------------------22
video/yyy-----------------5
video/qqqq-------------- 6

habra alguna forma de hacerlo, estoy trabajando con sql server, muchas gracias a todos los q respondan.
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:realizar una consulta

Publicado por Leonardo Josué (880 intervenciones) el 01/09/2010 22:07:13
Hola kriss, si es posible obtener lo que quieres, pero en lugar de darte la respuesta te pregunto ¿por lo menos hiciste algún intento de hacerlo?.

Como a muchos otros en este foro te recuerdo que este es un foro de DUDAS, no un lugar para hacer el trabajo de otros.

Tu consulta es bastante sencilla sale simplemente con SUM, GROUP BY y con WHERE. Nada me cuesta ponerte la solución a la que llegué, pero me gustaría que tu mism@ obtuvieras la respuesta. Te doy algunos tips para que trates de obtenerlo.

Primero, tu consulta se comporta de DOS maneras distintas, primero para el caso de las fotos NO NECESITAS AGRUPAR, simplemente HACER LA SUMA de las cantidades de TODOS LOS REGISTROS que contengan la palabra 'fotos' en su campo NOMBRE. (dado que no te importa el nombre asignas la palabra 'fotos' como un valor fijo en el select)

Ahora bien, para el caso de los videos, aquí SI ES NECESARIO AGRUPAR los registros por el campo nombre, SUMARIZANDO las cantidades para cada registro para TODOS LOS REGISTROS que contengan la palabra 'video' en el campo NOMBRE. (dado que sí te importa el nombre entonces lo incluyes en el select)

Una vez que obtengas estas dos consultas puedes UNIRLAS y obtener la consulta final.

Te pido por favor que trates de obtener tu consulta con estas pistas, si tienes problemas por favor, publica algo de lo que intentaste hacer y con gusto te ayudamos.

Saludos.
Leo.
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:realizar una consulta

Publicado por kriss (3 intervenciones) el 02/09/2010 15:12:59
Hola Leo: mil disculpas me equivoque, la tabla que tengo es la siguiente:

nombre----------------consulta
----------------------------------------
juan--------------------/fotos/xx
maria------------------/fotos/yy
juan--------------------/video/ssss
pedro------------------/fotos/zzz
juan--------------------/video/xxx
jose--------------------/video/yyy
rober------------------/video/ssss
joaquin----------------/video/xxx
maria------------------/video/qqqq
jose--------------------/fotos/xx

despues de una consulta necesito obtener los siguientes resultados

fotos----------------------4
video/ssss----------------2
video/xxx------------------2
video/yyy-----------------1
video/qqqq-------------- 1
o sea las consultas a fotos quiero que las cuente todas pero las consultas a video necesito que esten discriminadas
Llevo 3 dias con esta consulta sin obtener resultados por eso decidi acudir al foro..no se si habra una solucion..La consulta que realizo es la siguiente pero no obtengo el resultado deseado
SELECT consulta, COUNT(consulta) AS cant FROM Visitas GROUP BY consulta ORDER BY cant DESC

muchas gracias por responder
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:realizar una consulta

Publicado por Leonardo Josué (880 intervenciones) el 02/09/2010 16:25:52
Buenos días Kriss, aunque los datos de tu tabla cambien, el comportamiento de tus datos sigue siendo el mismo sólo tienes que cambiar un SUM por un COUNT Te repito, lo que quieres se obtiene con la UNIÓN DE DOS CONSULTAS. Si analizaste bien mi post para los videos ponía esto:

"Ahora bien, para el caso de los videos, aquí SI ES NECESARIO AGRUPAR los registros por el campo nombre, SUMARIZANDO las cantidades para cada registro para TODOS LOS REGISTROS que contengan la palabra 'video' en el campo NOMBRE. (dado que sí te importa el nombre entonces lo incluyes en el select)"

hago énfasis en que esta consulta sólo es válida para TODOS LOS REGISTROS QUE CONTENGAN LA PALABRA VIDEO, por lo tanto, a la consulta que pusiste como ejemplo tienes que agregarle la condición que te menciono

SELECT consulta, COUNT(consulta) AS cant
FROM Visitas
WHERE consulta like '%video%'
GROUP BY consulta ORDER BY cant DESC

Con esto lo que obtienes es la segunda parte de tu consulta:

consulta|cant
video/ssss|2
video/xxx|2
video/yyy|1
video/qqqq|1

ahora bien, citando también lo que escribí ayer

"primero para el caso de las fotos NO NECESITAS AGRUPAR, simplemente HACER LA SUMA de las cantidades de TODOS LOS REGISTROS que contengan la palabra 'fotos' en su campo NOMBRE. (dado que no te importa el nombre asignas la palabra 'fotos' como un valor fijo en el select)" como te comenté lo único que tienes que hacer es cambiar el SUM por un COUNT. traducido a SQL quedaría así:

SELECT 'Fotos' as consulta, count(*) as cant
FROM Visitas
WHERE consulta like '%fotos%';

con esta consulta obtienes lo siguiente

consulta|cant
fotos|4

Ahora tienes dos consultas separadas y vuelvo a citar mi comentario de ayer

"Una vez que obtengas estas dos consultas puedes UNIRLAS y obtener la consulta final."

SELECT 'Fotos' as consulta, count(*) as cant
FROM Visitas
WHERE consulta like '%fotos%'
UNION
SELECT consulta, COUNT(consulta) AS cant
FROM Visitas
WHERE consulta like '%video%'
GROUP BY consulta ORDER BY cant DESC

Hay que poner un poco más de atención para la próxima.

Saludos
Leo
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:realizar una consulta

Publicado por kriss (3 intervenciones) el 06/09/2010 19:02:18
muchas gracias Leo por tu tiempo, funciono de 10, no conocia la funcion UNION no tengo mucha experiencia en sql. nuevamente gracias
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