Desarrollo Web /

[PHP] Ayuda!: Compleja consulta MySQL

Participa en el tema [PHP] Ayuda!: Compleja consulta MySQL en el foro Desarrollo Web.
Estimados! He reaparecido por estos magnificos foros para traerles una inquietud. Haciendo una simple consulta ...

Buscar en este tema:
 
  •  
    Flyer_S escribió el 16/05/2006 a las 10:54 hs.
     
    ¿Mensaje inapropiado?
    #1 [PHP] Ayuda!: Compleja consulta MySQL
    Estimados!

    He reaparecido por estos magnificos foros para traerles una inquietud.
    Haciendo una simple consulta a la base de datos mySQL a través de PHP, necesito saber si se puede hacer lo siguiente:

    Dicha consulta me trae unos valores como estos: "|18|19|20|21". Lo que yo necesito hacer es que ahi mismo, me busque esos valores en otra tabla y me los reemplace por su correspondiente nombre. Se entiende?.. Por ejemplo:

    consulta:

    ID = 2991
    Nombre = Juan Perez
    Modulos = |18|19|20|21

    (buscando el nombre correspondiente por cada modulo, tendria que quedar así)

    ID = 2991
    Nombre = Juan Perez
    Modulos = |Modulo1|Mi_Modulo2|Tu_Modulo3|Este_Modulo4

    Se entiende?. Yo se que podria hacer un SELECT dentro de otro SELECT pero nunca supe bien como hacerlo.

    Me podrian orientar un cachitin?.
    Saludos!
    +
     
    0
    Me gusta
     
    http://www.psicofxp.com/forums/desarrollo-web.264/353979-php-ayuda-compleja-consulta-mysql.html
    | Más
  • LoncO escribió el 16/05/2006 a las 17:17 hs. ¿Mensaje inapropiado?

    #2 Re: Ayuda!: Compleja consulta MySQL

    No estoy seguro de haber entendido bien tu problema, pero por lo q pude entender, lamento comunicarte que con una sola consulta no vas a poder realizarlo.

    El problema que tenés ahi es pq las tablas no están en la primera forma normal. O sea, lo que necesitás es una tabla intermedia. Por ejemplo, vos tenés la tabla Usuarios (por ponerle algun nombre), la cual tiene los campos IdUsuario, Nombre y Modulos. Por otro lado tenés la tabla Modulos, la cual tiene un IdModulo, Nombe, y algunas cosas mas.
    Entonces vos estás buscando una relacion de N a N (un usuario puede tener varios módulos, y a un módulo lo puede tener más de un usuario).
    Lo que tendrías que hacer sería modificar tu tabla Usuarios, sacándole el campo modulos, y crear otra tabla ModulosUsuarios (por ponerle algún nombre), la cual sólo tendría los campos IdUsuario e IdMódulo:

    Usuarios
    IdUsuario
    Nombre
    email
    ..


    ModulosUsuarios
    IdUsuario
    IdModulo


    Modulos
    IdModulo
    Nombre
    ..


    Entonces ahí se te facilita cualquier búsqueda que vos quieras realizar entre módulos y usuarios.
    Para la consulta, tendrías que hacer:

    SQL = 'SELECT Usuarios.IdUsuario, Usuarios.Nombre, Modulos.Nombre FROM ((ModulosUsuarios INNER JOIN Modulos ON ModulosUsuarios.idModulo = Modulos.IdModulo) INNER JOIN Usuarios ON ModulosUsuarios.idUsuario = Usuarios.IdUsuario ) WHERE Usuarios.IdUsuario = "Nacho" ';

    No recuerdo bien la sintaxis del inner join, pero esa es la idea mas o menos.
    Bueno, no estoy seguro de que ésto sea lo q estabas buscando, pero creo q si.
    Cualquier cosa, chiflá.
    Saludos!
    Nacho.-
    Me gusta este mensaje
  • Flyer_S escribió el 17/05/2006 a las 14:56 hs. ¿Mensaje inapropiado?

    #3 Re: Ayuda!: Compleja consulta MySQL

    Nacho, te zarpaste con tu respuesta y tenes toda la razón. Lo que pasa es que de esa forma me ocupa mas espacio en la tabla.

    Utilizando como lo hice originalmente, un usuario tenia en una misma celda todos sus módulos (luego con un siemple explode, los separaba).

    Pero tenes razon, me parece que voy a tener que hacer eso.
    La cuestión, ahora estoy pensando, cuando el usuario elija con los checkboxes a qué modulos quiere inscribirse voy a tener que hacer con un FOR o WHILE los INSERT's a la tabla que vos me dijiste: "ModulosUsuarios".

    Otra cosa que tengo que investigar a fondo son los JOIN. Nunca supe bien como utilizarlos.

    Muchísimas Gracias!!!!!!!!!!....
    Cuando tenga algo hecho te comento.

    Saludos!
    Me gusta este mensaje
  • LoncO escribió el 17/05/2006 a las 23:30 hs. ¿Mensaje inapropiado?

    #4 Re: Ayuda!: Compleja consulta MySQL

    Es cierto eso del FOR o WHILE.., es un garrón.

    Pero, habría que ver qué atributos tenien los módulos. Tal vez si no tienen atributos ni te convenga hacer otra tabla Módulos y meter cuantos modulos tengas como campos booleanos en la tabla usuarios. Ojo, también depende de la cantidad de módulos que haya.
    Contanos bien sobre los módulos (atributos, etc), y vemos como lo podemos resolver para que las consultas/inserciones te queden mas fáciles y rápidas

    Por otro lado, en ESTA pagina tenés bien explicado como usar los JOINs y los compara con la manera de hacer la misma consulta sin utilizarlos.

    Saludos!!
    Nacho.-
    Me gusta este mensaje


Estadísticas del tema
  • 3 RESPUESTAS
  • 1559 VISTAS
  • 2 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB