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

[SOLUCIONADO] LEFT JOIN que aumenta la cantidad de resultados

Estas en el tema de LEFT JOIN que aumenta la cantidad de resultados en el foro de SQL Server en Foros del Web. Holas! Tengo una consulta en la que usaba un JOIN para obtener unos datos de otra tabla: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT A ...
  #1 (permalink)  
Antiguo 23/07/2013, 09:13
Avatar de qvixote  
Fecha de Ingreso: marzo-2008
Mensajes: 79
Antigüedad: 16 años
Puntos: 2
LEFT JOIN que aumenta la cantidad de resultados

Holas!

Tengo una consulta en la que usaba un JOIN para obtener unos datos de otra tabla:

Código SQL:
Ver original
  1. SELECT
  2. A.CAMPO1
  3. B.CAMPO2
  4.  
  5. FROM TABLA1 A
  6. JOIN TABLA2 B ON TABLA2.COMUNA = TABLA1.COMUNA AND TABLA2.ANIO = TABLA1.ANIO

Pero me estaba trayendo menos registros y me di cuenta de que era porque habían unos registros de la tabla A que tenían una comuna que no existe en la tabla B, por lo que obviamente no se contaban esos registros en el JOIN.

Como yo quiero que esos registros se incluyan de todas formas, cambié el JOIN por LEFT JOIN, con lo que el número de registros aumentó, pero demasiado!

La cardinalidad de la tabla1 es de 7941, al hacer le consulta con JOIN la cantidad de registros era 7266. Al hacer la consulta con LEFT JOIN yo esperaba que la cantidad de registros fueran 7941, los mismos que la cardinalidad de la tabla1, pero fueron 7981, o sea, 40 registros más.

¿Cómo es esto posible? ¿Alguna idea?

Última edición por gnzsoloyo; 23/07/2013 a las 09:21
  #2 (permalink)  
Antiguo 23/07/2013, 09:27
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: LEFT JOIN que aumenta la cantidad de resultados

Haz el Left Join entre TABLA1
y la sub consulta de TABLA2 Group By Comuna, Anio.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 23/07/2013, 09:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: LEFT JOIN que aumenta la cantidad de resultados

si estas usando left join entonces se estan incluyendo los resultados que no estan dentro de la tabla 1, es lo que hace left join lo que tienes en tu tabla 1 mas los que estan en tabla2 que hacen match mas los que no hacen match con tu ID
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 23/07/2013, 10:20
Avatar de qvixote  
Fecha de Ingreso: marzo-2008
Mensajes: 79
Antigüedad: 16 años
Puntos: 2
Respuesta: LEFT JOIN que aumenta la cantidad de resultados

Si tienen razón, gracias. El problema era que existían campos duplicados en la tabla2. Resuelto.

Etiquetas: cantidad, join, left, registro, resultados, select, tabla
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 15:11.