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

[SOLUCIONADO] Problema en consulta inner join

Estas en el tema de Problema en consulta inner join en el foro de Bases de Datos General en Foros del Web. Buena tarde, espero me puedan ayudar, tengo la siguiente consulta que no logro acomodar. tengo 3 tablas empresa(Idempresa, nombre,IdPais(FK)), almacenes(Idalmacen,nombre,Idempresa(FK),IdPais(FK )), paises(IdPais,nombre) La consulta que ...
  #1 (permalink)  
Antiguo 10/11/2015, 17:58
 
Fecha de Ingreso: noviembre-2015
Ubicación: Irapuato, Gto, México
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Problema en consulta inner join

Buena tarde, espero me puedan ayudar, tengo la siguiente consulta que no logro acomodar.

tengo 3 tablas

empresa(Idempresa, nombre,IdPais(FK)),
almacenes(Idalmacen,nombre,Idempresa(FK),IdPais(FK )),
paises(IdPais,nombre)

La consulta que quiero hacer es obtener todos los almacenes con su empresa y el país del almacen y país de la empresa.
Una empresa tiene varios almacenes y pueden estar en el mismo o diferente país de su empresa.


la consulta que tengo es:

Código SQL:
Ver original
  1. SELECT
  2. p.nombre AS PaisAlmacen,
  3. a.Idalmacen,
  4. a.Idempresa ,
  5. p.nombre AS PaisEmpresa
  6. FROM
  7. paises p
  8. INNER JOIN almacenes a ON p.IdPais= a.IdPais
  9. INNER JOIN empresa e ON p.IdPais= e.Id_Pais
  10. WHERE
  11. a.Idempresa= e.Idempresa;

pero no logro obtener todos los almacenes, solo los que su país es igual al país de la empresa, me pueden ayudar a solucionar esta consulta.

Gracias

Última edición por gnzsoloyo; 10/11/2015 a las 18:12
  #2 (permalink)  
Antiguo 10/11/2015, 18:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema en consulta inner join

Código SQL:
Ver original
  1. SELECT
  2.     p.nombre PaisAlmacen,
  3.     a.Idalmacen,
  4.     a.Idempresa ,
  5.     p.nombre PaisEmpresa
  6. FROM empresa e
  7. INNER JOIN almacenes a ON a.Idempresa= e.Idempresa
  8. INNER JOIN paises p ON p.IdPais= a.IdPais
  9. ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/11/2015, 18:41
 
Fecha de Ingreso: noviembre-2015
Ubicación: Irapuato, Gto, México
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema en consulta inner join

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código SQL:
Ver original
  1. SELECT
  2.     p.nombre PaisAlmacen,
  3.     a.Idalmacen,
  4.     a.Idempresa ,
  5.     p.nombre PaisEmpresa
  6. FROM empresa e
  7. INNER JOIN almacenes a ON a.Idempresa= e.Idempresa
  8. INNER JOIN paises p ON p.IdPais= a.IdPais
  9. ;
Muchas gracias por contestar, el problema lo sigo teniendo, me muestra todos los almacenes que hay en la tabla, pero en el campo paísempresa me muestra lo mismo que paisalmacen.

*paises*
IdPais nombre
1 MEXICO
2 ESTADOS UNIDOS DE AMERICA
3 CANADA
4 ECUADOR
5 COSTA RICA
6 REPUBLICA DE GUATEMALA

*almacenes*
IdAlmacen IdPais Idempresa
Almacen General 1 1
CeDis Guatemala 6 2
CeDis Irapuato 1 4
CeDis Irwindale 2 3

*empresa*
Idempresa IdPais
1 1
2 6
3 2
4 5
6 5

El resultado de la consulta es

PaisAlmacen Almacen Empresa PaisEmpresa
1 Almacen General 1 1
6 CeDis Guatemala 2 6
1 CeDis Irapuato 4 1
2 CeDis Irwindale 3 2

y deberia ser:

PaisAlmacen Almacen Empresa PaisEmpresa
1 Almacen General 1 1
6 CeDis Guatemala 2 6
1 CeDis Irapuato 4 5
2 CeDis Irwindale 3 2


Gracias, favor en que está erronea la consulta.
  #4 (permalink)  
Antiguo 10/11/2015, 20:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema en consulta inner join

El ID del país de la empresa no siempre coincide con el almacén, entonces se debe hacer un INNER JOIN diferente para cada caso.
Código SQL:
Ver original
  1. SELECT
  2.     pa.nombre PaisAlmacen,
  3.     a.Idalmacen,
  4.     a.Idempresa ,
  5.     pe.nombre PaisEmpresa
  6. FROM almacenes a  
  7. INNER JOIN empresa e ON a.Idempresa= e.Idempresa
  8. INNER JOIN paises pa ON pa.IdPais= a.IdPais
  9. INNER JOIN paises pe ON pe.IdPais= e.IdPais
  10. ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/11/2015, 10:17
 
Fecha de Ingreso: noviembre-2015
Ubicación: Irapuato, Gto, México
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema en consulta inner join

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El ID del país de la empresa no siempre coincide con el almacén, entonces se debe hacer un INNER JOIN diferente para cada caso.
Código SQL:
Ver original
  1. SELECT
  2.     pa.nombre PaisAlmacen,
  3.     a.Idalmacen,
  4.     a.Idempresa ,
  5.     pe.nombre PaisEmpresa
  6. FROM almacenes a  
  7. INNER JOIN empresa e ON a.Idempresa= e.Idempresa
  8. INNER JOIN paises pa ON pa.IdPais= a.IdPais
  9. INNER JOIN paises pe ON pe.IdPais= e.IdPais
  10. ;
Gracias ya quedó Resuelta la consulta

Etiquetas: join, select, tabla
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 14:30.