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

Consulta LEFT JOIN no me funciona

Estas en el tema de Consulta LEFT JOIN no me funciona en el foro de SQL Server en Foros del Web. porque esta consulta Left Inner Join no me funciona? SELECT poblaciones.poblacion, estados.codigo FROM poblaciones LEFT JOIN estados ON estados.poblacion=poblaciones.poblacion; Describo... La tabla Poblaciones contiene 1 ...
  #1 (permalink)  
Antiguo 14/12/2007, 19:19
 
Fecha de Ingreso: julio-2004
Mensajes: 104
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta Consulta LEFT JOIN no me funciona

porque esta consulta Left Inner Join no me funciona?

SELECT poblaciones.poblacion, estados.codigo
FROM poblaciones LEFT JOIN estados ON estados.poblacion=poblaciones.poblacion;

Describo...
La tabla Poblaciones contiene 1 campos
poblacion... poblacion es una lista de poblaciones donde no hay ninguna repetida.
Poblacion
Sevilla
Madrid
Coruña
Alicante


La tabla Estados contiene chorrocientos registros con otros datos.
codigo, poblacion principalmente.
codigo Poblacion
56423 Sevilla
56424 Sevilla
56425 Sevilla
56426 Sevilla
56427 Sevilla
1209 Madrid
1210 Madrid
99902 Coruña
99905 Coruña
99904 Coruña
99906 Coruña
99909 Coruña
1156 Alicante
1160 Alicante
1132 Alicante


La idea es que me extraiga solo el primer codigo de cada ciudad que aparezca. (en realidad no es importante los subsecuentes) es decir con que me extraiga lo siguiente, seria feliz
codigo Poblacion
56423 Sevilla
1209 Madrid
99902 Coruña
1132 Alicante


Pero no le encuentro a como hacer esta consulta. Agradeceria Orientacion.
GRACIAS.
__________________
Podria no estar de acuerdo con lo que dices....., pero daria mi vida por el derecho que tienes de decirlo.
  #2 (permalink)  
Antiguo 17/12/2007, 06:59
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 2 meses
Puntos: 3
Re: Consulta LEFT INNER JOIN no me funciona

pareciera que está mala la relación entre las tablas, no te faltará agregar el pais por ejemplo para el join?

algo como
SELECT poblaciones.poblacion, estados.codigo
FROM poblaciones LEFT JOIN estados ON estados.poblacion=poblaciones.poblacion;
and estados.pais=poblaciones.pais

saludos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #3 (permalink)  
Antiguo 18/12/2007, 12:06
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 23 años
Puntos: 7
Re: Consulta LEFT INNER JOIN no me funciona

Según parece, quieres el primer código por población en orden ascendente...
Podrías solucionarlo con un query correlacionado.
Código:
select  a.poblacion,
 (
     select  min(codigo)
     from    estados as b
     where   a.poblacion = b.poblacion
 ) as codigo
from     poblaciones as a
 
Otra opción si estás usando SQL Server 2005 es que utilices la función de ranking ROW_NUMBER:
Código:
SELECT      a.poblacion, b.codigo
FROM        poblaciones AS a
LEFT JOIN   (
     SELECT  ROW_NUMBER() OVER(PARTITION BY poblacion ORDER BY codigo)AS rn,
             codigo,
             poblacion
     FROM    estados
 ) AS b
 ON a.poblacion = b.poblacion
 AND b.rn = 1 
La segunda opción podría ser más eficiente, ya que sólo hace una pasada para cada una de las tablas.
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 00:23.