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

Inner Join Multiple

Estas en el tema de Inner Join Multiple en el foro de PostgreSQL en Foros del Web. Hola buenas, Veràn, tengo una duda que no he podido despejar a pesar de leer varios post sobre inner join, left y rigth y todo ...
  #1 (permalink)  
Antiguo 21/04/2016, 23:50
 
Fecha de Ingreso: diciembre-2015
Ubicación: Panamá City
Mensajes: 1
Antigüedad: 8 años, 3 meses
Puntos: 0
Mensaje Inner Join Multiple

Hola buenas,
Veràn, tengo una duda que no he podido despejar a pesar de leer varios post sobre inner join, left y rigth y todo join,
el caso es que tengo es el siguiente:


tengo una base de datos en postgresql que tiene la siguiente estructura:
3 tablas

Empresa
id_empresa
nombre_empresa
id_tipo_empresa

Estatus
nombre_estatus
id_empresa

Tipo
nombre_tipo_empresa
id_tipo_empresa

y bueno quiero poder llamar a todos los valores de la tabla empresa, pero obviamente que no aparezcan los Ids, sino los nombres que estan en sus tablas relacionadas respectivamente,

si hago una consulta de tipo INNER JOIN
serìa asì:

SELECT nombre_empresa, nombre_tipo_empresa
FROM empresa
INNER JOIN tipo_empresa ON tipo_empresa.id_tipo_empresa = empresa.id_empresa

Hasta ahì todo bien, el problema inicia cuando intento llamar al nombre estatus que tiene como llave foranea el id_empresa de la tabla empresa

(Es una representacion de mi esquema original)

Pasa y resulta que tengo mas tablas que contienen el id de la tabla empresa y la tabla empresa contiene como foranea el id de otras tablas y no tengo idea de como halar campos especificos, para este caso el nombre de estatus teniendo como referencia el id_empresa.

Vi algunos ejemplos de Inner Join Anteriormente pero no me funcionan para tal caso

Pdt: Pido disculpas si no posteo el tema como se debe, pero soy nuevo y estoy apenas tratando de entender el entorno...
Gracias de antemano!
  #2 (permalink)  
Antiguo 03/05/2016, 07:52
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Inner Join Multiple

Yo creo que la consulta debería ser algo así como:

Código SQL:
Ver original
  1. SELECT nombre_empresa, nombre_estatus, nombre_tipo_empresa FROM Empresa
  2. INNER JOIN Estatus
  3. ON (Estatus.id_empresa = Empresa.id_empresa)
  4. INNER JOIN Tipo
  5. ON(Tipo.id_tipo_empresa=Empresa.id_tipo_empresa)

(No es obligatorio poner la tabla a la que pertenece cada campo ya que no hay nombres repetidos, pero me he acostumbrado a hacerlo así)
__________________
Mi calculadora en Qt

Última edición por dehm; 03/05/2016 a las 08:05
  #3 (permalink)  
Antiguo 03/05/2016, 10:57
 
Fecha de Ingreso: agosto-2015
Ubicación: La Habana
Mensajes: 72
Antigüedad: 8 años, 7 meses
Puntos: 4
Respuesta: Inner Join Multiple

Quisiera puntualizar que si Status es un nomenclador, y cada empresa tendra asociado solamente un status en un instante de tiempo y que además varias empresas pueden tener el mismo status, lo correctamente diseñado sería la tabla status con un id_status y un nombre_status (sin id_empresa) y en la tabla empresa añadirle como llave foránea id_status. Así se obtendía una relación de una empresa a un status y de un status a varias empresas. De esta forma facilitaría las búsquedas y disminuyen los errores.De la forma que está el mismo nombre_status pudiera repetirse infinitamente mientras creciera la cantidad de empresas con ese estatus.

Etiquetas: inner-join, postgreslq
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:47.