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

Consulta entre dos tablas con datos faltantes

Estas en el tema de Consulta entre dos tablas con datos faltantes en el foro de SQL Server en Foros del Web. Estimada comunidad. Por favor necesito ayuda con esta consulta a base de datos, estoy trabajando en SQL Server y al ser bastante nuevo en el ...
  #1 (permalink)  
Antiguo 23/04/2017, 21:21
 
Fecha de Ingreso: septiembre-2007
Mensajes: 1
Antigüedad: 16 años, 7 meses
Puntos: 0
Exclamación Consulta entre dos tablas con datos faltantes

Estimada comunidad.
Por favor necesito ayuda con esta consulta a 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:

id || nombre
------------

1 || artic s.a.

2 || loker s.a.

3 || somer s.a.

4 || exportransf s.a.

5 || exteroys r.d.

6 || superar s.a.

7 || travelfina s.k.

8 || norwegian l.m.

9 || comext s.a.


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

id || nombre || fab_id || imp_id

-------------------

1 || perfil T 2m || 6 || null

2 || perfil L 2m || 6 || null

3 || ruedas 10 || 3 || 8

4 || brazos laq || null || 7

5 || rulem 8 p || null || 5

6 || cintas 3m || 4 || null

7 || alum 3t5 || 9 || 8

8 || inyec l7u || null || 7

9 || perfil 3m || null || 5

10 || ru15m || 2 || 4

11 || ru20m || 1 || null

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:

id || nombre || fab_nom || imp_nom

--------------------

1 || perfil T 2m || superar s.a. || null

2 || perfil L 2m || superar s.a. || null

3 || ruedas 10 || somer s.a. || norwegian l.m.

4 || brazos laq || null || travelfina s.k.

5 || rulem 8p || null || exteroys r.d.

6 || cintas 3m || exportransf s.a. || null

7 || alum 3t5 || comext s.a. || norwegian l.m.

8 || inyec l7u || null || travelfina s.k.

9 || perfil 3m || null || exteroys r.d.

10 || ru15m || loker s.a. || exportransf s.a.

11 || ru20m || artic s.a. || null

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 los resultados que se necesitan:

select p.id, p.nombre, e.nombre
from productos p left join empresas e on p.id = e.id


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
  #2 (permalink)  
Antiguo 24/04/2017, 06:52
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: Consulta entre dos tablas con datos faltantes

sencillo seria algo como esto:

Código SQL:
Ver original
  1. SELECT t1.id,t1.nombre, t2.nombre AS fab_nom, t3.nombre AS imp_nom FROM productos AS t1
  2. LEFT JOIN empresas AS t2 ON (t1.id=t2.fab_id)
  3. LEFT JOIN empresas AS t3 ON (t1.id=t3.imp_id)

prueba y comentas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: subconsultas, tablas
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 05:24.