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

[SOLUCIONADO] combinar resultados

Estas en el tema de combinar resultados en el foro de Mysql en Foros del Web. Hola a todos, Me surge una query primeriza para mi, tengo usuarios que ubicar en un departamento y darle un cargo en concreto, para ello ...
  #1 (permalink)  
Antiguo 26/12/2013, 03:42
 
Fecha de Ingreso: marzo-2013
Mensajes: 83
Antigüedad: 11 años, 7 meses
Puntos: 0
combinar resultados

Hola a todos,

Me surge una query primeriza para mi, tengo usuarios que ubicar en un departamento y darle un cargo en concreto, para ello tengo 4 tablas

tabla 1 Usuarios (id_Usuario, Nombre...)
tabla 2 Departamentos (id_Departamento, departamento)
tabla 3 Cargos_dpto (id_Cargo_dpto, cargo)
tabla 4 asistencia_dpto (id_asistencia, id_Usuario, id_Departamento, id_Cargo): aqui listo cada usuario a que departamento y cargo le otorgo (pueden ser varios departamentos con varios cargos, es decir varias filas para un usuario)

Pues bien, si un usuario está en varios departamentos me devuelve tantas líneas como departamentos tenga... y necesito obtenerlos combinados en una sola línea

Query utilizada (generada de forma dinámica con php, esto es para que siempre coga todos los dptos si se agrega alguno a las tablas):
Código SQL:
Ver original
  1. SELECT
  2.     U.id_Usuario, CONCAT(U.Nombre,' ',U.PrimerApellido,' ',U.SegundoApellido) Usuario,
  3.     IF(A.id_Departamento=1,C.id_Cargo_dpto,NULL) 'Almacén de material',
  4.     IF(A.id_Departamento=2,C.id_Cargo_dpto,NULL) 'Calidad',
  5.     IF(A.id_Departamento=3,C.id_Cargo_dpto,NULL) 'Controlling',
  6. FROM usuarios U
  7. LEFT JOIN asistencia_dpto A ON A.id_Usuario=U.id_Usuario
  8. LEFT JOIN cargos_dpto C ON C.id_Cargo_dpto=A.id_Cargo_dpto

y lo que obtengo es:

Código HTML:
Ver original
  1. Pepe pepote 2 NULL NULL
  2. Pepe pepote NULL 2 NULL
  3. Carmen carmona NULL 1 NULL

Lo que deseo:

Código HTML:
Ver original
  1. Pepe pepote 2 2 NULL
  2. Carmen carmona NULL 1 NULL

No sirve Group BY U.id_Usuario ya que lo único que consigo es que me salga el primer resultado, pero no los combina
  #2 (permalink)  
Antiguo 26/12/2013, 04:05
 
Fecha de Ingreso: marzo-2013
Mensajes: 83
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: combinar resultados

Me autorespondo:

Código SQL:
Ver original
  1. SELECT
  2.     U.id_Usuario, CONCAT(U.Nombre,' ',U.PrimerApellido,' ',U.SegundoApellido) Usuario,
  3.     SUM(IF(A.id_Departamento=1,C.id_Cargo_dpto,NULL)) 'Almacén de material',
  4.     SUM(IF(A.id_Departamento=2,C.id_Cargo_dpto,NULL)) 'Calidad',
  5.     SUM(IF(A.id_Departamento=3,C.id_Cargo_dpto,NULL)) 'Controlling',
  6. FROM usuarios U
  7. LEFT JOIN asistencia_dpto A ON A.id_Usuario=U.id_Usuario
  8. LEFT JOIN cargos_dpto C ON C.id_Cargo_dpto=A.id_Cargo_dpto

Etiquetas: combinar
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 09:43.