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

Juntar dos tablas y group by

Estas en el tema de Juntar dos tablas y group by en el foro de Mysql en Foros del Web. Hola a todos, Tengo las siguientes sentencias que me funcionan perfectamente. Como podéis observar son exactamente iguales, solo cambia el nombre de la tabla: SENTENCIA ...
  #1 (permalink)  
Antiguo 11/04/2018, 10:36
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Juntar dos tablas y group by

Hola a todos,

Tengo las siguientes sentencias que me funcionan perfectamente. Como podéis observar son exactamente iguales, solo cambia el nombre de la tabla:

SENTENCIA UNO:

Código SQL:
Ver original
  1. SELECT sueldos.*, profesiones.*
  2. FROM sueldos, profesiones
  3. WHERE sueldos.publicado = 1
  4. AND sueldos.puesto_id = profesiones.id_profesion
  5. AND sueldos.empresa_id = 12
  6. GROUP BY puesto_id

SENTENCIA DOS:

Código SQL:
Ver original
  1. SELECT valores.*, profesiones.*
  2. FROM valores, profesiones
  3. WHERE valores.publicado = 1
  4. AND valores.puesto_id = profesiones.id_profesion
  5. AND valores.empresa_id = 12
  6. GROUP BY puesto_id

¿Como podría combinar los resultados en una sola consulta como si fueran una sola tabla (incluyendo todos los AND y GROUP BY)?

Gracias!

Última edición por gnzsoloyo; 12/04/2018 a las 05:01 Razón: Usar los HIGHLGHT, por favor.
  #2 (permalink)  
Antiguo 11/04/2018, 12:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Juntar dos tablas y group by

Hola davidj:

No entiendo muy bien la estructura de tu consulta, sobre todo por el hecho de que estás AGRUPANDO registros, sin embargo no utilizas ninguna función de agregación (COUNT, MIN, MAX, AVG, etc), entonces, no encuentro el sentido de esta agrupación.

Cita:
¿Como podría combinar los resultados en una sola consulta como si fueran una sola tabla (incluyendo todos los AND y GROUP BY)?
Para esto, primero tendrías que decirnos cuál es la cardinalidad entre las tablas, es decir cómo están relacionadas entre si... ¿Todas las Profesiones Tienen un registro en Sueldos que cumpla con la condición? o puede haber profesiones que no tengan un registro en sueldos. Y lo mismo pasa con la tabla de valores, ¿todas las profesiones tienen un registro que cumpla con la condición? ¿Se relacionan 1 a 1, 1 a muchos o muchos a muchos?

Dependiendo de tu respuesta entonces será la forma en que tengas que relacionar tus registros...

Una "posible" solución sería utilizar INNER JOIN's, más o menos así:

Código MySQL:
Ver original
  1. SELECT sueldos.*, profesiones.*, valores.*
  2. FROM profesiones
  3. INNER JOIN sueldos ON
  4.   sueldos.puesto_id = profesiones.id_profesion
  5. INNER JOIN valores ON
  6.       valores.puesto_id = profesiones.id_profesion
  7.   and sueldos.publicado = valores.publicado
  8.   and sueldos.empresa_id = valores.empresa_id
  9.     sueldos.publicado = 1
  10. AND sueldos.empresa_id = 12
  11. GROUP BY profesiones.id_profesion;

Pero esta función sólo aplica si tienes una relación 1 a 1 entre tus tablas y sea mandatoria, es decir, que el registro exista en las tres tablas.

Si esto no te sirve, entonces postea algunos datos de ejemplo de tus tablas y a partir de esos datos dinos qué es lo que esperas obtener como salida.

Saludos
Leo.

Etiquetas: group, juntar, tablas
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 08:50.