Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/06/2012, 07:48
Avatar de gnzsoloyo
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, 5 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)