Tema: Consulta sql
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/10/2009, 06:39
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: Consulta sql

Me gusta rizar el rizo!!!!

TuTabla
Provincia:::::::Nombre
MAD:::::::JUAN
SAN:::::::ROSA
VLC:::::::ROSA
LOG:::::::ROSA
MAD:::::::MARIO
BAR:::::::JESUS
SEV:::::::ANDY
OVI:::::::ANDY
MAD:::::::JUAN

He supuesto que puede haber mas de un Juan en Madrid pero que si solo hay Juanes en Madrid quieres que diga Madrid no Varias...


Código sql:
Ver original
  1. SELECT Sbc1.Nombre,
  2.              IF(Sbc1.Provincias=1,Sbc2.Provincia,"Varias") AS Prov
  3. FROM (SELECT Sbc0.Nombre,
  4.                          COUNT(*) AS Provincias
  5.              FROM (SELECT TuTabla.Nombre,
  6.                                       TuTabla.Provincia
  7.                                FROM TuTabla
  8.                               GROUP BY TuTabla.Nombre,
  9.                                                 TuTabla.Provincia) AS Sbc0
  10.               GROUP BY Sbc0.Nombre) AS Sbc1
  11.         LEFT JOIN (SELECT TuTabla.Nombre, TuTabla.Provincia
  12.                            FROM TuTabla
  13.                            GROUP BY TuTabla.Nombre,
  14.                                              TuTabla.Provincia) AS Sbc2
  15.           ON Sbc1.Nombre = Sbc2.Nombre;

Creo que funciona.... analisis

Subconsulta 0 i 2

Código sql:
Ver original
  1. SELECT TuTabla.Nombre,
  2.              TuTabla.Provincia
  3.        FROM TuTabla
  4.        GROUP BY TuTabla.Nombre,
  5.                         TuTabla.Provincia

Unifica las repeticiones (los Juanes de Madrid se contaran como un solo Juan), nos dan parejas unicas de nombre y provincia.


Subconsulta 1


Código sql:
Ver original
  1. SELECT Sbc0.Nombre,
  2.              COUNT(*) AS Provincias
  3.      FROM (....) AS Sbc0
  4.      GROUP BY Sbc0.Nombre

Sobre la subconsulta 0 cuenta cuantas provincias hay por nombre....


Código sql:
Ver original
  1. SELECT Sbc1.Nombre,
  2.              IF(Sbc1.Provincias=1,Sbc2.Provincia,"Varias") AS Prov
  3. FROM (...(...) AS Sbc0....) AS Sbc1
  4.         LEFT JOIN (.....) AS Sbc2
  5.              ON Sbc1.Nombre = Sbc2.Nombre;

Se aplica el condicional en funcion del numero de provincias de cada nombre...

Quim