[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