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

Consulta de 2 tablas de una BBDD

Estas en el tema de Consulta de 2 tablas de una BBDD en el foro de Mysql en Foros del Web. Tengo dos tabla que se llaman divisiones y proyectos . Necesito poder seleccionar en una sóla consulta el campo [bd] de la tabla de divisiones ...
  #1 (permalink)  
Antiguo 07/06/2012, 08:44
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 5 meses
Puntos: 0
Consulta de 2 tablas de una BBDD

Tengo dos tabla que se llaman divisiones y proyectos.
Necesito poder seleccionar en una sóla consulta el campo [bd] de la tabla de divisiones y el campo [numproy] de la tabla de proyectos para asignar a los usuarios (de otra tabla) permisos de gestión para divisiones y/o proyectos.
No tengo problema para asignar los permisos pero no se escribir el query para hacer el select a las 2 tablas.
¿Me pueden ayudar?
Gracias
  #2 (permalink)  
Antiguo 07/06/2012, 09:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta de 2 tablas de una BBDD

Se podemos ayudar, pero no se comprende la estructura de relaciones entre proyectos y divisiones, o su vinculo con los usuarios.
¿Por qué no empiezas posteando la estructura de esas tablas, y explicas mas claramente cuál es la idea, qué representará esa relación?
__________________
¿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 07/06/2012, 15:52
 
Fecha de Ingreso: febrero-2007
Ubicación: Madrid, España
Mensajes: 4
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Consulta de 2 tablas de una BBDD

Si, danos más datos Caitos.

Puedes ir buscando, si no la conoces, la sintaxis de join para selects. Te dejo un enlace http://dev.mysql.com/doc/refman/5.0/en/join.html
  #4 (permalink)  
Antiguo 08/06/2012, 02:02
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Consulta de 2 tablas de una BBDD

Quizás porque tenía prisa cuando realicé la consulta o porque asumí el entendimiento de la misma pido disculpas...
Lo que necesito está en desarrollo y no es complicado. Voy a tratar de explicarme de la manera más clara posible:

Se trata de desarrollar un script para individualizar la gestión de los usuarios de una empresa grande a partir de una BBDD con las siguientes tablas:
  • usuarios
  • modulos (funciones para cada division y/o proyecto: Documentos, calidad, CRM, ...etc.)
  • divisiones (diferentes unidades de negocio de la empresa)
  • proyectos (proyectos de cada división)
La intención es incluir en un campo [permisos] de la tabla usuarios un array que contiene las duplas [$modulo.$iddivision] y [$modulo.$idproyecto] que se seleccionen mediante checkbox para tener una matriz seleccionable para cada usuario.
El script sería algo parecido a esto:

select uid from usuarios
while(list($uid)) {
select modulo from modulos
while(list($modulo)) {//LISTA HORIZONTAL(cabecera de la matriz)
select iddivision from divisiones]
while(list($iddivision)) {//LISTA VERTICAL(izquierda de la matriz)
<input type=\"checkbox\" name=\"array_permiso[]\" value=\"$modulo$iddivision\" >
}
select idproyecto from proyectos
while(list($idproyecto)) {//LISTA VERTICAL(izquierda de la matriz)
<input type=\"checkbox\" name=\"array_permiso[]\" value=\"$modulo$idproyecto\" >
}
}
}
//////////////////////////////////////////////////////////
<input type=\"submit\" name=\"op\" value=\"GUARDAR\">

if ($op=="GUARDAR"){
sql_query("update usuarios set permisos='$array_permiso' where uid='$uid'
}
//////////////////////////////////////////////////////////////////////////
Al final por cada usuario tendria una matri:

USUARIO 1 MOD1 MOD2 MOD3 ....................

DIVISION1 X X X
DIVISION2 X X X
DIVISIONn X X X

PROYECTO1 X X X
PROYECTO2 X X X
PROYECTOn X X X

USUARIO 2

USUARIO n
////////////////////////////////////////////////////////////////////////////////////////////////
Mi consulta estaba dirigida a evirtar los 2 while's (divisiones y proyectos) convirtiendo en uno sólo pero ya ves que no es demasiado problema.
Lo único que me queda solucionar es identificar el $array_permiso para cada usuario no sólo para guardarlo sino para boder aplicar un CheckAll para cada módulo pero entiendo que esta es una cuestíon que debo plantear en el foro de Jvascript.
Por cierto me ¿podrías aclarar porqué mis consultas en el foro aparecen con font normal y otro aparecen en negrita? pues tengo alguna consulta pendiente y no se si tengo que esperar respuesta.

Gracias por tu atención
  #5 (permalink)  
Antiguo 08/06/2012, 05:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta de 2 tablas de una BBDD

Dame un rato a que llegue a la oficina. Tienes graves errores conceptuales de BBDD
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 08/06/2012, 07:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta de 2 tablas de una BBDD

Bueno, volviendo al punto, lo que me expresas y que es una violación al modelo E-R y su aplicación en las Bases de Datos Relacionales, es esto:
Cita:
La intención es incluir en un campo [permisos] de la tabla usuarios un array que contiene las duplas [$modulo.$iddivision] y [$modulo.$idproyecto] que se seleccionen mediante checkbox para tener una matriz seleccionable para cada usuario.
Eso es lo que se denomina “campo multivaluado” y están completamente prohibidos en el modelo relacional. Sólo sirven para crear dolores de cabeza y para romper la consistencia de datos, sin contar con la interidad referencia.

Empecemos por el principio:
Si lo que tienes es un sistema en el que una misma división tiene N proyectos, y cada proyecto N participantes, lo que tienes es una relación ternaria de cardinalidad 1:N:N, que se genera como una relación N:N entre proyectos y usuarios, con un discriminante de divisiones.
Eso requiere, desde el punto de vista del diseño de las bases de datos, de una tabla para gestionar la relación, la cual tendrá una PK compuesta por el id de Proyectos, el ID de Divisiones y el Id del Usuario.
Si lo que quieres es evitar crear la tabla y “solucionar” todo con un array, estás pensando como programador y no como DBA o DA. Ese tipo de soluciones no te permitirá desarrollar consultas que se puedan responder con SQL, porque no se pueden analizar los arrays contenidos en esa columna sin leerlos completamente, o por lo menos, recuperar los que cumplan una condición poco discriminante (usando LIKE). En cambio si usas una tabla, una simple consulta de SQL te puede dar cualquier combinación de datos que requiera.

Un dato adicional: MySQL no tiene sentencias condicionales, y no soporta WHILE, LOOP ni ninguna otra cláusula semejante dentro de un SELECT, por lo que para hacer lo que propones en ese código, lo tendrás que hacer en la aplicación… con todo lo que conlleve.

Respecto a el texto de los mensajes, bueno, para poner en negritas tienes que seleccionar el texto y pulsar el botón del menú superior del textarea que indica "B".... Como en cualquier editor...
__________________
¿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: bbdd, select, tabla, tablas, 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 04:52.