[Madrid-pm] Crear listados desde una BD

Roberto Henriquez Laurent roberto en freekeylabs.com
Mie Jul 9 03:53:59 PDT 2008


PEGG wrote:
> Hola, tengo una tabla en una BD de mysql que almacena el nombre de un 
> país y su correspondiente id.
> Por ejemplo:
> ID - País
> 1 - ESP
> 1 - USA
> 1 - ITA
> 2 - JPN
> 2 - RUS
> 3 - VEN

Si los IDs no son únicos, creo que no deberías llamar a ese campo ID 
sino otra cosa que refleje mejor lo que es, para evitar confusiones 
(como la que experimento ahora mismo). Podría ser más bien algo como 
"grupo".

> 
> Mi problema es que tengo que consultar la tabla y juntar las 
> direcciones, quedando así:
> ESP - USA
> ESP - ITA
> USA - ITA
> JPN - RUS

Puedes probar a hacer un join de la tabla consigo misma, así:

select pa.pais paisA, pb.pais paisB from paises pa, paises pb where 
pa.grupo = pb.grupo and pa.pais <> pb.pais;

Pero tendrías el problema de que cada combinacion de dos países te 
aparece dos veces. Pero lo puedes arreglar si obligas a que la 
combinación cumpla una condición adicional, por ejemplo que paisA > 
paisB. Así solo uno de los dos pares es elegido.

Así que al final te queda:

select pa.pais paisA, pb.pais paisB from paises pa, paises pb where 
pa.grupo = pb.grupo and pa.pais > pb.pais;

Espero que te sirva, saludos!

--R



Más información sobre la lista de distribución Madrid-pm