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

inner join repite filas

Estas en el tema de inner join repite filas en el foro de SQL Server en Foros del Web. Buen Dia a todos! tengo una consulta que me genera filas repetidas... al hacer un inner join entre 4 tablas... @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver ...
  #1 (permalink)  
Antiguo 23/05/2011, 10:12
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
inner join repite filas

Buen Dia a todos! tengo una consulta que me genera filas repetidas... al hacer un inner join entre 4 tablas...
Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[LISTAR_PRODUCTO]
  2. AS
  3. SELECT P.ID_PRODUCTO,C.DESCRIPCION AS CATEGORIA,S.DESCRIPCION AS SUBCATEGORIA,P.CODIGO,P.TIPO,P.DESCRIPCION,
  4. P.IMPRESION,M.DESCRIPCION AS MARCA,P.SMIN AS STOCK_MIN,P.SMAX AS STOCK_MAX,P.PACK,P.COMBO,P.FUEL_MAXSALE,
  5. P.OBSERVACIONES,P.REFERENCIA  FROM Producto P INNER JOIN CATEGORIA C ON (P.ID_CAT = C.ID_CAT) INNER JOIN SUBCATEGORIA S ON (P.ID_SCAT = S.ID_SCAT)
  6. INNER JOIN MARCA M ON (P.ID_MARCA = M.ID_MARCA)

si le quito el inner join de subcategoria todo anda bien(no se repite) pero necesito mostrar su informacion.... espero puedan ayudarme. Saludos!

PDT: Si necesitan mas info me dicen... .
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #2 (permalink)  
Antiguo 23/05/2011, 10:56
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: inner join repite filas

hola Aquaventus:

El problema creo que está en que te falta definir alguna relación entre tus llaves y por lo tanto, al hacer INNER JOIN se está realizando un producto cartesiano entre tus tablas. revisa tus FK para ver que las estás especificando todas.

Dices que el problema está con la tabla subcategoría, veo en la consulta que sólo estás poniendo esta restricción

Código:
P.ID_SCAT = S.ID_SCAT
Revisa que la tabla de SUBCATEGORIAS no contiene una referencia FK con la tabla categorías, porque puede ser que tengas que hacer algo como esto:

Código SQL:
Ver original
  1. INNER JOIN SUBCATEGORIA S ON (P.ID_CAT = S.ID_CAT AND P.ID_SCAT = S.ID_SCAT)

Si continuas con problemas sería conveniente que nos dijeras cuál es la estructura de tus tablas y si es posible que nos des algunos datos de ejemplo para poder hacer algunas pruebas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 23/05/2011, 11:07
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: inner join repite filas

Cita:
Iniciado por leonardo_josue Ver Mensaje
Código SQL:
Ver original
  1. INNER JOIN SUBCATEGORIA S ON (P.ID_CAT = S.ID_CAT AND P.ID_SCAT = S.ID_SCAT)
Muchas Gracias leonardo_josue, eso soluciono mi problema! . Te agradesco infinitamente. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 24/05/2011, 19:32
Avatar de abel_c_b  
Fecha de Ingreso: junio-2008
Mensajes: 103
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: inner join repite filas

Cita:
Iniciado por leonardo_josue Ver Mensaje
hola Aquaventus:

El problema creo que está en que te falta definir alguna relación entre tus llaves y por lo tanto, al hacer INNER JOIN se está realizando un producto cartesiano entre tus tablas. revisa tus FK para ver que las estás especificando todas.

Dices que el problema está con la tabla subcategoría, veo en la consulta que sólo estás poniendo esta restricción

Código:
P.ID_SCAT = S.ID_SCAT
Revisa que la tabla de SUBCATEGORIAS no contiene una referencia FK con la tabla categorías, porque puede ser que tengas que hacer algo como esto:

Código SQL:
Ver original
  1. INNER JOIN SUBCATEGORIA S ON (P.ID_CAT = S.ID_CAT AND P.ID_SCAT = S.ID_SCAT)

Si continuas con problemas sería conveniente que nos dijeras cuál es la estructura de tus tablas y si es posible que nos des algunos datos de ejemplo para poder hacer algunas pruebas.

Saludos
Leo.

Etiquetas: filas, join
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 17:38.