Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/03/2013, 11:49
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Saber columna de cada valor en un Select

Hola Divit:

En lo particular, creo que tienes un mal modelo de tablas, porque desde mi punto de vista a redundancia de datos, pero bueno, en realidad esa no fue la pregunta, pero si creo que deberías darle un vistazo a la teoría sobre modelo Entidad-Relación para que veas a qué me refiero...

Volviendo al tema que nos atañe, en realidad no se me ocurrió una respuesta muy trivial, pero podrías hacerlo más o menos así:

Código:
SELECT 
  T1.empresa, 
  CASE columna 
    WHEN 'tag1' THEN tag1
    WHEN 'tag2' THEN tag2 
    WHEN 'tag3' THEN tag3
    WHEN 'tag4' THEN tag4  
  END tag
FROM tags T1
INNER JOIN 
(  SELECT empresa, tag1 tag, 'tag1' columna
   FROM contador 
   UNION ALL 
   SELECT empresa, tag2 tag, 'tag2' columna 
   FROM contador 
   UNION ALL 
   SELECT empresa, tag3 tag, 'tag3' columna 
   FROM contador 
   UNION ALL 
   SELECT empresa, tag4 tag, 'tag4' columna
   FROM contador 
   ORDER BY tag DESC LIMIT 1
 ) T2 ON T1.empresa = T2.empresa
En este punto cabe una pregunta, ¿qué pasaría cuando el tag con el número máximo no fuera único? Con los datos que pones no se da el caso, pero ¿qué pasaría si existiera otro 6 para otra empresa, o para la misma empresa pero en distintos tags? ¿qué es lo que se debería presentar como salida? porque la consulta que propongo presentaría sólo un elemento. Si necesitaras todos los elementos entonces la estrategia sería distinta. Dale un vistazo para ver si te sirve.

Saludos
Leo.