Hola vivi0309:
Efectivamente, el left join te debe presentar todos los registros de tu tabla de la derecha, independientemente que no tengas información en la tabla de la izquierda, aquí el problema es que en alguna de tus tablas tienes información duplicada, es decir, el join lo estás haciendo sobre un campo que seguramente no es campo llave y por lo tanto se está realizando algún tipo de producto carteciano entre tus tablas: checa este ejemplo para que observes el comportamiento:
Código SQL:
Ver originalDECLARE @Tabla1 TABLE (id INT, campo VARCHAR(50))
INSERT INTO @Tabla1 VALUES (1, 'uno')
INSERT INTO @Tabla1 VALUES (2, 'dos')
SELECT * FROM @Tabla1
DECLARE @Tabla2 TABLE (id INT, campo VARCHAR(50))
INSERT INTO @Tabla2 VALUES (3, 'uno')
INSERT INTO @Tabla2 VALUES (4, 'uno')
SELECT * FROM @Tabla2
SELECT * FROM @Tabla1 T1
LEFT OUTER JOIN @Tabla2 T2 ON T1.campo = T2.campo
Si observas la tabla1 sólo contiene dos registros, al hacer un LEFT JOIN con la tabla2 EXISTEN DOS REGISTROS con la descripción 'UNO' de tal manera que el resultado de la consulta queda así:
Código:
id|Campo|id|Campo
--------------------------------
1|uno|3|uno
1|uno|4|uno
2|dos|NULL|NULL
Creo que esto es lo que está pasando en tu caso.
Saludos
Leo.