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

Consulta SQLServer no muestra todos los resultados

Estas en el tema de Consulta SQLServer no muestra todos los resultados en el foro de SQL Server en Foros del Web. Hola a todos... Tengo el siguiente problema... puede que sea una novatada pero no se ke estoy haciendo mal... Primero que nada tengo estas dos ...
  #1 (permalink)  
Antiguo 18/02/2011, 11:20
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 1
Consulta SQLServer no muestra todos los resultados

Hola a todos... Tengo el siguiente problema... puede que sea una novatada pero no se ke estoy haciendo mal...

Primero que nada tengo estas dos tablas (SQLSERVER 2005):

extensionesIP:

id int
extension nchar(10)
nombre nchar(80)
unidad nchar(50)
sede nchar(40)



infoReporte:

id int
tipo nvarchar(100)
momentoInicio nchar(100)
numeroMarcado nchar(100)
numeroOrigen nchar(100)
servProveedor nchar(100)
duracionOriginal nchar(100)
duracionTarificada nchar(100)
tarifaUtilizada nchar(100)
costo nchar(100)


Tengo la siguiente consulta, donde quiero tomar los registros de la tabla infoReporte y obtener el nombre, unidad y sede de la segunda tabla, en base a la extension IP:

SELECT infoReporte.id, infoReporte.tipo, infoReporte.momentoInicio, infoReporte.numeroMarcado, infoReporte.numeroOrigen, infoReporte.servProveedor,
infoReporte.duracionOriginal, infoReporte.duracionTarificada, infoReporte.tarifaUtilizada, infoReporte.costo, extensionesIP.sede, extensionesIP.unidad,
extensionesIP.nombre
FROM infoReporte LEFT OUTER JOIN
extensionesIP ON infoReporte.numeroOrigen = extensionesIP.extension

Se supone que con esta consulta me deberia arrojar todos los resultados de la tabla derecha (infoReporte) tengan o no coincidencia con los campos de la tabla izquierda, no es asi..??

Y me esta arrojando 11103 registros, teniendo que mostrarme solo 9620.

Saben que estoy haciendo mal..?? Agradeceria cualquier explicaicon...
  #2 (permalink)  
Antiguo 18/02/2011, 12:06
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Consulta SQLServer no muestra todos los resultados

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 original
  1. DECLARE @Tabla1 TABLE (id INT, campo VARCHAR(50))
  2. INSERT INTO @Tabla1 VALUES (1, 'uno')
  3. INSERT INTO @Tabla1 VALUES (2, 'dos')
  4.  
  5. SELECT * FROM @Tabla1
  6.  
  7. DECLARE @Tabla2 TABLE (id INT, campo VARCHAR(50))
  8. INSERT INTO @Tabla2 VALUES (3, 'uno')
  9. INSERT INTO @Tabla2 VALUES (4, 'uno')
  10.  
  11. SELECT * FROM @Tabla2
  12.  
  13. SELECT * FROM @Tabla1 T1
  14. 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.
  #3 (permalink)  
Antiguo 18/02/2011, 12:19
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 1
Consulta SQLServer no muestra todos los resultados

Hola Leonardo:

La verdad, la consulta si es sobre dos campos que no son llave principal en ninguna de las dos tablas y efectivamente en la tabla infoReporte se repiten las extensiones, el problema es ke esos campos son los ke necesito comparar...

Tienes alguna idea que me ayude a solucionar el problema, o me toca modificar la consulta y tratar de obtener los datos que necesito de otra forma..??...

Gracias por tu respuesta...
  #4 (permalink)  
Antiguo 21/02/2011, 08:52
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Consulta SQLServer no muestra todos los resultados

Hola vivi0309:

Como dice el dicho, hay que comenzar por el principio. En primer lugar no nos haz dicho si entre las dos tablas que estás utilizando tienes definida alguna relación de llave foránea (que no sea por su puesto la extensión). Si es así pues entonces tienes que hacer la unión justamente por esa llave. Ahora bien, el problema no radica en que existan números de extensión repetidos en tus tabla infoReport, sino más bien el problema está en la tabla extensionesIP, por lo que entiendo esta tabla sirve como una especie de catálogo de extensiones por lo tanto si tienes alguna extensión duplicada entonces es donde se está haciendo el producto carteciano.

revisa su modelo de datos, pues sino tienes llaves foráneas difícilmente podrás obtener un reporte como el que quieres.

saludos
Leo.
  #5 (permalink)  
Antiguo 10/03/2011, 16:30
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Consulta SQLServer no muestra todos los resultados

Que pena la demora en responder a este tema... Pero la verdad pude diseñar mi consulta y no tuve necesidad de cambiar la estructura de mis tablas...

Muchas gracias por tus respuestas...

Etiquetas: muestra, resultados
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 22:15.