SQL - Consulta entre dos tablas con datos faltantes

 
Vista:
Imágen de perfil de Marti

Consulta entre dos tablas con datos faltantes

Publicado por Marti (2 intervenciones) el 22/04/2017 09:26:05
Estimada comunidad.
Urgente necesito ayuda con esta consulta a la base de datos, estoy trabajando en SQL Server y al ser bastante nuevo en el tema no puedo resolver lo siguiente:

En la primer tabla, algunas empresas son fabricantes y otras importadoras:

1

En la segunda tabla están los productos, cuyos campos "fabricante id" e "impotador id" refieren a la tabla "EMPRESAS".

2

Como puede observarse, la segunda tabla tiene que algunos productos están relacionados sólo con los fabricantes, otros productos sólo con los importadores y otros con ambos.

La consulta que necesito sería la que arroja el siguiente resultado:

3

Es decir, poner el nombre de la empresa en lugar del "id". Intenté hacerlo con variantes de JOIN, pero con lo que se me ocurrió no me trae todos los resultados que necesito:

4

Debo resolverlo con las tablas y campos que tengo , no puedo agregar nada, a no ser que la solución sea por medio de una tabla temporal, pero no sé como hacerlo!.

Quien me pueda dar una mano le estaré muy agradecido.

Muchas gracias, Martín.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta entre dos tablas con datos faltantes

Publicado por leonardo_josue (1173 intervenciones) el 24/04/2017 15:48:54
Hola Marti:

Lo que tienes con tu tabla es una Doble Relación, y como su nombre lo indica, se resuelve haciendo un DOBLE JOIN sobre tu catálogo de empresas...

La consulta que pones es prácticamente la mitad de la consulta, es decir, relacionar tu campo FABRICANTE_ID con tu tabla de empresas:

1
2
3
4
5
6
7
SELECT
  P.id,
  P.nombre,
  E1.nombre
FROM
  productos P
LEFT JOIN empresas E1 ON P.fabricante_id = E1.id;

Lo único que falta ahora es unir la columna IMPORTADOR_ID con la misma tabla de empresas... ahora bien, para poder hacer esto, DEBES AGREGAR UN NUEVO JOIN SOBRE LA TABLA EMPRESAS, pero dado que ya tienes un JOIN asociado, lo único que tienes que hacer es ponerle un ALIAS distinto:


1
2
3
4
5
6
7
8
9
SELECT
  P.id,
  P.nombre,
  E1.nombre fabricante_nombre,
  E3.nombre importador_nombre
FROM
  productos P
LEFT JOIN empresas E1 ON P.fabricante_id = E1.id
LEFT JOIN empresas E2 ON P.importador_id = E2.id;

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Marti

Consulta entre dos tablas con datos faltantes

Publicado por Marti (2 intervenciones) el 25/04/2017 04:45:13
Excelente estimado Leonardo, funciona a la perfección. La tenía frente a mis narices!, tendré que estudiar SQL de una vez por todas!!.
Realmente te estoy muy agradecido por tu tiempo y ayuda. Un gran saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar