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

[SOLUCIONADO] como formular una consulta en mysql

Estas en el tema de como formular una consulta en mysql en el foro de Mysql en Foros del Web. Hola buenos dias para todos! les consulto lo siguiente, estoy un poco trabado y no se como formular la siguiente consulta.... tengo una tabla con ...
  #1 (permalink)  
Antiguo 12/12/2013, 09:31
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
como formular una consulta en mysql

Hola buenos dias para todos!
les consulto lo siguiente, estoy un poco trabado y no se como formular la siguiente consulta....
tengo una tabla con la siguiente estructura:

id | id_cliente | foto
1 - 5 - foto1.jpg
2 - 5 - foto2.jpg
3 - 5 - foto6.jpg
4 - 10 - foto5.jpg
5 - 2 - foto1.jpg
6 - 4 - foto2.jpg
7 - 6 - foto6.jpg
8 - 6 - foto5.jpg



Lo que debo hacer es mostrar todos los registros cuando por cliente exista mas de 2 registros.

En este caso serian los clientes con id: 5 y 6.

Alguien sabe como hacerlo?

Muchas gracias!!!
__________________
Bye!
  #2 (permalink)  
Antiguo 12/12/2013, 11:18
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: como formular una consulta en mysql

Hola Pelao:

Esta consulta es de nivel principiante , de las primeras consultas que aprendes en cualquier curso de SQL o que viene en cualquier manual para principiantes. Además no posteas nada de lo que intentaste hacer (porque supongo que intentaste hacer algo) ojo con eso... siempre debes incluir lo que has hecho, no importa si está mal o no funciona. en ocasiones resulta más simple corregir algo que ya está comenzado a dar una respuesta desde cero.

Para tu consulta lo único que necesitas es aplicar la cláusula GROUP BY en conjunto con la cláusula HAVING count()... ejemplos en internet hay muchísimos, puedes preguntarle a SAN GOOGLE y si continuas con problemas como dije, postea algo de lo que intentaste hacer y con gusto tratamos de ayudarte.

Saludos
Leo.
  #3 (permalink)  
Antiguo 12/12/2013, 11:58
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: como formular una consulta en mysql

Hola Leo, antes que nada gracias por la mano....

efectivamente poniendo la siguiente consulta:

Código SQL:
Ver original
  1. SELECT f.*, u.*, f.foto AS foto1
  2. FROM fotos f INNER JOIN usuarios u ON f.id_usuario = u.id_usuario
  3. WHERE MONTH(f.fecha) >= '6' AND f.estado != 'Eliminado' AND (f.seleccion = '0' OR f.seleccion = '')
  4. GROUP BY f.id_usuario HAVING COUNT(f.id_usuario) > 1

me muestra los resultados, el problema es que me agrupa en 1 foto x id_usuario....y yo necesito q muestre todas las fotos de cada id_usuario CUANDO tenga mas de 2 imagenes cargadas.

Pense...le saco el group by...pero no...tampoco funciono de esa forma...

gracias LEo!
__________________
Bye!

Última edición por gnzsoloyo; 12/12/2013 a las 12:08
  #4 (permalink)  
Antiguo 12/12/2013, 12:10
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: como formular una consulta en mysql

Cita:
yo necesito q muestre todas las fotos de cada id_usuario CUANDO tenga mas de 2 imagenes cargadas.
...Estás a un paso. Sólo tienes que razonarlo:
Código SQL:
Ver original
  1. SELECT ...
  2. FROM...
  3. WHERE ... IN(SELECT ... FROM ... WHERE... GROUP BY ... HAVING...)
__________________
¿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 12/12/2013, 12:18
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: como formular una consulta en mysql

mmm....ni idea como es?
nunca puse un SELECT dentro de otro con IN. no se como hacerlo.. :(
__________________
Bye!
  #6 (permalink)  
Antiguo 12/12/2013, 12:27
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: como formular una consulta en mysql

Hola de nuevo Pelao:

Otra vez vale la pena que leas el primer comentario que te puse... Aquí en el foro no sirve eso de decir que no tienes idea de cómo hacer algo... si no tienes idea o no sabes, entonces INVESTIGA antes de preguntar... gnzsoloyo prácticamente te está dando la respuesta a lo que quieres, lo único que faltaría es completar los SELECT's y sustituirlos por tus propias consultas...

¿Tienes dudas de cómo funciona el IN? entonces lee la documentación oficial:

http://dev.mysql.com/doc/refman/5.0/...ubqueries.html

¿Necesitas más ejemplos de subconsultas? checa esta liga

http://lmgtfy.com/?q=ejemplos+subconsultas+mysql

Saludos
Leo.
  #7 (permalink)  
Antiguo 12/12/2013, 12:39
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: como formular una consulta en mysql

no obvio leo, pero mira pongo lo siguiente:

SELECT f.*, u.*, f.foto AS foto1 FROM fotos f INNER JOIN usuarios u ON f.id_usuario = u.id_usuario WHERE MONTH(f.fecha) >= '6' AND f.estado != 'Eliminado' AND (f.seleccion = '0' OR f.seleccion = '') IN (SELECT * FROM fotos GROUP BY id_usuario HAVING count(id_usuario) > 9)

y me dice...

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
__________________
Bye!
  #8 (permalink)  
Antiguo 12/12/2013, 12:44
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: como formular una consulta en mysql

Cita:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
Esto no nos interesa, porque este no es el foro de PHP.
Acá analizaremos sólo lo que tiene que ver con la consulta, pero desde esa óptica, el problema es que no has razonado correctamente el esquema propuesto:
Código SQL:
Ver original
  1. SELECT f.*, u.*, f.foto foto1
  2.   FROM fotos f INNER JOIN usuarios u ON f.id_usuario = u.id_usuario
  3.  WHERE MONTH (f.fecha) >= 6
  4.    AND f.estado != 'Eliminado'
  5.    AND u.id_usuario IN (  SELECT id_usuario
  6.                             FROM fotos
  7.                         GROUP BY id_usuario
  8.                           HAVING COUNT (*) >= 2)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 12/12/2013, 13:42
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: como formular una consulta en mysql

Antes que nada gracias por la ayuda, ya funciono.

En realidad tenia que repetir cierta condición dentro de la segunda búsqueda porque sino buscaba en toda la base sin esas condiciones y no servia

dejo el código final que use:


Código SQL:
Ver original
  1. SELECT f.*, u.*, f.foto AS foto1
  2. FROM fotos f INNER JOIN usuarios u ON f.id_usuario = u.id_usuario
  3. WHERE MONTH (f.fecha) >= 6
  4. AND f.estado != 'Eliminado'
  5. AND f.id_usuario IN (SELECT id_usuario
  6. FROM fotos
  7. WHERE MONTH (fecha) >= 6
  8. AND estado != 'Eliminado'
  9. GROUP BY id_usuario
  10. HAVING COUNT(*) >= '10')
  11. ORDER BY u.customer


Gracias!
__________________
Bye!

Última edición por gnzsoloyo; 12/12/2013 a las 13:48

Etiquetas: registro, tabla
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 00:16.