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

consultas complicadas

Estas en el tema de consultas complicadas en el foro de Mysql en Foros del Web. Hola amig@s. Estoy trabajando con una base de datos de un volúmen importante últimamente y ahora he de sacar estadísticas de los registros que se ...
  #1 (permalink)  
Antiguo 18/05/2010, 03:27
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
consultas complicadas

Hola amig@s.

Estoy trabajando con una base de datos de un volúmen importante últimamente y ahora he de sacar estadísticas de los registros que se inserten.
Hace bastante tiempo que no practico en plan consultas complicadas con mysql y no me acuerdo si se puede y cómo hacer ciertas consultas.

Os comento, casi todas se basan en una tabla(que varía dependiendo de la estadística) que tiene que mostrar todos sus registros, tengan o no coincidencia con otras tablas.
Me explico, tengo por ejemplo la tabla 1, de la cual se tienen que mostrar todos los registros:
campo1
campo2
campo3
campo4
Luego tengo que clasificar en 2 grupos, a partir de otra tabla, una serie de registros que, a su vez, se dividen en otros 2 grupos cada una.
Os muestro un ejemplo de cómo sería la cosa:
Código:
 

                     |     Usuarios condicion1     |   Usuarios condicion 2
Tipos              |----------------------------------------------------------------
                      |     Hombre    |    Mujer      |    Hombre    |   Mujer
-------------------------------------------------------------------------------------
campo1          |                     |                   |                    |
-------------------------------------------------------------------------------------
campo2          |                     |                   |                    |
-------------------------------------------------------------------------------------
campo3          |                     |                   |                    |
-------------------------------------------------------------------------------------
campo4          |                     |                   |                    |
-------------------------------------------------------------------------------------


Siendo la tabla de los campos una tabla que es referenciada por la tabla en la que hago las condiciones 1 y 2. Esta última es referenciada por otra tabla que contiene el sexo de los usuarios.
En total, 3 tablas de las que en una debo sacar todos los registros, tengan o no coincidencia con la tabla que le referencia(si no la tienen el resultado del count sería 0) y a su vez que sean de un sexo u otro.
Por ahora he conseguido separar las consultas en usuarios condicion1 mujer, usuarios condicion 1 hombre, usuarios condicion2 mujer y usuarios condicion2 hombre, cada uno a su vez agrupado por los campos 1, 2 ,3 y 4.
Código SQL:
Ver original
  1. //Mujeres condicion1 agrupadas por campos
  2. SELECT campo_agrupa, COUNT(id_usuario)
  3. FROM tabla_usuarios u INNER JOIN tabla_condiciones uod
  4. ON uod.d_usuario = u.d_usuario
  5. WHERE sexo = 1
  6. AND u.d_usuario NOT IN(SELECT id_usuario
  7. FROM tabla_condiciones WHERE condicion1 != 1)
  8. AND uod.id_usuario NOT IN(SELECT d_usuario
  9. FROM otra_tabla_de_condicion_sin_importancia
  10. WHERE fin_condicion IS NOT NULL)
  11. AND uod.id_usuario NOT IN(SELECT id_usuario
  12. FROM otra_tabla_mas_de_condicion_sin_importancia
  13. WHERE ffin_condicion IS NOT NULL)
  14. GROUP BY campo_agrupa ORDER BY campo_agrupa

Esto lo hago para las 4 subdivisiones, se podría hacer todo en una sola consulta?
También decir que las tablas donde muestro los resultados son estáticas, lo único que cambia es el count de los usuarios que cumplen las condiciones.

Etiquetas: Ninguno
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 13:57.