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

Consulta sobre Rendimiento

Estas en el tema de Consulta sobre Rendimiento en el foro de Mysql en Foros del Web. Hola resulta que tengo 3 tablas Tabla: Usuarios Campos: ID(Primary Key), Nombre Tabla: Empresas Campos: ID(Primary Key), Nombre Tabla: UsuarioEmpresas Campos: ID_USUario(Foranea), ID_Empresa(Foranea) Lo que ...
  #1 (permalink)  
Antiguo 26/10/2008, 21:43
 
Fecha de Ingreso: septiembre-2008
Mensajes: 53
Antigüedad: 15 años, 7 meses
Puntos: 0
Consulta sobre Rendimiento

Hola resulta que tengo 3 tablas

Tabla: Usuarios
Campos: ID(Primary Key), Nombre

Tabla: Empresas
Campos: ID(Primary Key), Nombre

Tabla: UsuarioEmpresas
Campos: ID_USUario(Foranea), ID_Empresa(Foranea)

Lo que quiero es mostrar la lista de las empresas y campo deducido para saber si el usuario que esta viendo la lista esta o no esta en la empresa.

Entonces, podria hacer:

1) A medida que vaya escribiendo las empresas, consulta si el usuario esta o no esta en la empresa. Mi consulta seria la siguiente

Código:
 SELECT e.* FROM empresas as e;
Y a medida que vaya escribiendo cada empresa (por un bucle) en el reporte (pag web), vaya y consulta por cada empresa a la tabla de las relaciones

Código:
Select ID_Usuario From UsuarioEmpresas
Where ID_USUARIO = [UsuarioActual] and ID_Empresa = [EmpresaQueEstaEscribiendo]
Y bueno hacer una compracion de que si es nulo. Escribir NO, y si no NO.

2) O Arreglarmelas y hacer una sola consulta Sql. Que por Cierto tengo pensado No se como hacerla. XD


Gracias de Antemano.
  #2 (permalink)  
Antiguo 26/10/2008, 22:13
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Consulta sobre Rendimiento

Hola lo que debes realizar es un JOIN con tus tablas te dejo un link donde puedes leer al respecto si tienes dudas postea nuevamente

join

Espero que te sirva.

Saludos
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 26/10/2008, 22:26
 
Fecha de Ingreso: septiembre-2008
Mensajes: 53
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Consulta sobre Rendimiento

gracias, el tema de los Joins lo entiendo no mas. Pero He probado todos los joins y no obtengo lo que quier xD. Tengo estos datos

Tabla Empresas:
ID Nombre
1 Empresa1
2 Empresa2

Tabla Usuarios:
ID_USUARIO NOmbre
1 Usuario1
2 Usuario2

Tabla UsuarioEmpresa:
ID_U ID_E
1 1
1 2
2 1

Si lo miran el usuario 2 es el unico que esta en ambas empresas. y esta bien. pero cuando consulte sobre el usuario 1 quisiera que mustre

ID_Empresa ID_USUARIO
1 1
2 NULL

Espero que se haya entendido, he probado todos los joins y ninguna resulta :(
  #4 (permalink)  
Antiguo 26/10/2008, 22:41
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Consulta sobre Rendimiento

Hola, se me ocurre algo si, prueba lo siguiente:
Código:
SELECT e.nombre,e.id, u.nombre,u.id FROM empresa e LEFT JOIN usuarioempresa  ON e.id=id_e LEFT JOIN usuarios u ON u.id=id_u
Saludos
__________________
->Aprender es un proceso que incluye el error..
  #5 (permalink)  
Antiguo 26/10/2008, 22:47
 
Fecha de Ingreso: septiembre-2008
Mensajes: 53
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Consulta sobre Rendimiento

Gracias por responder. lo probe, pero me da el mismo resultado :(
  #6 (permalink)  
Antiguo 27/10/2008, 17:31
 
Fecha de Ingreso: septiembre-2008
Mensajes: 53
Antigüedad: 15 años, 7 meses
Puntos: 0
Sonrisa Respuesta: Consulta sobre Rendimiento

Bueno al Final he logrado solucionarlo. Con un unión, gracias cala92 por la ayuda. He aqui la solucion:

Código:
SELECT e.Nomber, ue.ID_U
FROM e LEFT JOIN ue ON e.ID = ue.ID_E
WHERE ue.ID_U = 2
UNION 
SELECt e.Nomber, NULL as ID_U 
FROM e 
WHERE e.ID NOT IN(SELECT  ue.ID_E
FROM ue 
WHERE ue.ID_U = 2)
Y el resultado es:

Nomber ID_U
Empresa1 2
Empresa2 NULL
  #7 (permalink)  
Antiguo 27/10/2008, 21:33
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Consulta sobre Rendimiento

HOla usuario1000 que bueno que hayas podido solucionar el problema y postear la solucion por si a otro le sirve. Muchos Saludos !!!

Nos vemos.
__________________
->Aprender es un proceso que incluye el error..
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 19:20.