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

Armar consulta mysql

Estas en el tema de Armar consulta mysql en el foro de Mysql en Foros del Web. Buenas, necesito armar una consulta, en la que interactúan tres tablas... ahora las detallo Código HTML: Personas // tiene un campo id único Empresas // ...
  #1 (permalink)  
Antiguo 13/06/2012, 10:51
 
Fecha de Ingreso: junio-2010
Mensajes: 23
Antigüedad: 14 años, 5 meses
Puntos: 0
Armar consulta mysql

Buenas, necesito armar una consulta, en la que interactúan tres tablas... ahora las detallo

Código HTML:
Personas // tiene un campo id único
Empresas  // tiene un campo id unico

Oficinas  // tiene un campo id que se relaciona con el id de empresas o personas, y otro campo "type" que toma valor 0 si es una persona o 1 si es una empresa

Hasta el momento estoy asi

Código HTML:
personas - id  //  empresas - id  //   oficinas - id - type
           1   //              1  //              1      0       
           2   //              2  //              2      0       
           3   //              3  //              3      0   
                                  //              1      1       
                                  //              2      1        
                                  //              3      1        

Mi gran problema, es que no se como hacer para armar una consulta en la que pueda listas todas las empresas y personas de una sola ves.

Pensé algo asi... pero no me convence del todo... quizás exista una mejor manera de hacerlo, desde ya esto no me funciona

SELECT personas.id, empresas.id, oficinas.id, oficinas.type FROM personas, empresas, oficinas WHERE personas.id = oficinas.id AND oficina.type = '0' OR empresas.id = oficinas.id AND oficina.type = '1'


Cualquier ayuda consejo será agradecido!
Saludos
  #2 (permalink)  
Antiguo 13/06/2012, 11:31
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: Armar consulta mysql

Cita:
Personas // tiene un campo id único
Empresas // tiene un campo id unico

Oficinas // tiene un campo id que se relaciona con el id de empresas o personas, y otro campo "type" que toma valor 0 si es una persona o 1 si es una empresa
Lamento decirte que acabas de reprobar Base de Datos I.

El diseño de las relaciones está completamente mal. Una FK no puede estar jamás refiriéndose a dos entidades diferentes. Cada FK apunta a una única tabla. hacerlo de otra forma no sólo es una violación flagrante al modelo relacional, es la puerta para tener enormes problemas de inconsistencia e integridad referencia.

Si tienes tres entidades, Empresas, Oficinas y Personas, lo que estás planteando es:
- Una Empresa tiene N oficinas y cada oficina es de una única empresa (relación 1:N, la FK de Empresa va en oficina.
- En una oficina trabajan diferentes personas, pero cada persona trabaja en una única oficina (relación 1:N, la FK de oficina va en Persona).

Esto quiere decir que la relación es Empresa -> Oficina <- Persona.

¿Se comprende la cosa?

Si no empiezas a modelar correctamente la base, después será demasiado tarde.
__________________
¿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 14/06/2012, 11:10
 
Fecha de Ingreso: junio-2010
Mensajes: 23
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Armar consulta mysql

Hola, gracias por la respuesta..
El problema, es que yo no arme la base de datos, y modificarme me traeria infinidad de problemas, necesito saber si hay alguna forma de hacer esta consulta, seleccionar todas las oficinas, mas alla de todos los problemas que esto traiga, es mejor a modificar la estructura.

Saludos
  #4 (permalink)  
Antiguo 14/06/2012, 11:15
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: Armar consulta mysql

Cita:
es mejor a modificar la estructura.
El alcohol en horarios de trabajo, es una muy mala idea...

Poderse hacer, tal vez.
Paracticidad, optimización y seguridad: Ninguna.

El resultado van a ser consultas muy complicadas, y seguiriás teniendo problemas de consistencia de datos.
Mira la respuesta de Leonardo en este post: http://www.forosdelweb.com/f86/if-ad...t-join-998665/

Puede que te ayude a enfrentarte en lo que se te avecina.
__________________
¿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 14/06/2012, 11:36
 
Fecha de Ingreso: junio-2010
Mensajes: 23
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Armar consulta mysql

muchas gracias, eso necesitaba...
el sitio es enorme, y modifcar la bd va a ser un caos, prefiero hacerlo a lo "bruto" y que sea lo que dios quiera :P
Saludos
  #6 (permalink)  
Antiguo 14/06/2012, 13:49
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: Armar consulta mysql

La idea era que miraras el post, no que postearas en el otro.
Postear preguntar propias en post ajenos se considera falta de cortesía en los foros. Es como meterse en conversaciones ajenas.

Respecto al tema, ya te lo dijo Leo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: armar, tabla, campos
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 18:34.