none
Problema para armar table con datos en bd RRS feed

  • Pregunta

  •      

    Hola buenos dias

    Tengo una consulta

    Tengo tres tablas en oracle

    Resumiendo los datos importantes serian:

    Permisos
    IdPermiso
    Nombre (unique)

    Arbol1
    IdArbol
    IdPermiso
    Nombre

    Arbol2
    IdArbol
    IdPermiso
    Nombre

    Esto seria nivel base de datos

    En la pagina tengo tres autocomplete

    NombrePermisos

    NombreArbol1

    NombreArbol2

    Y un boton de busqueda que me deberia generar una tabla similar a esta

    NombrePermisoPrueba NombreArbol1Prueba1
    NombreArbol1Prueba2
    NombreArbol1Prueba3
    NombreArbol2Prueba1
    NombreArbol2Prueba2


    O sea para un permiso mostrar todos sus respectivos NombreArbol1 y NombreArbol2

    De los tres autocomplete que tengo para filtrar lo unico que necesito es que al menos uno tenga datos
    O sea si solo tengo el campo NombrePermisos deberia traerme todas las relaciones con NombreArbol1 y NombreArbol2 si tengo NombrePermisos y alguno de los otros dos campos para lo unico que serviria es para no traer nada en caso que no se cumpla la condicion
    Y si NombreArbol1 y/o NombreArbol2 contienen datos y NombrePermisoPrueba no, deberia traerme todos los NombrePermisoPrueba donde aparezcan

    Ahora explicado el contexto algunos problemas que tengo son

    Al armar una query como esta 

    SELECT Permisos.Nombre, Arbol1.Nombre, Arbol2.Nombre
    FROM Permisos
    LEFT JOIN Arbol1
    ON Permisos.IdPermiso = Arbol1.IdPermiso
    LEFT JOIN Arbol2
    ON Permisos.IdPermiso = Arbol2.IdPermiso

    El mayor problema que tengo es que tal vez venga un dato y los otros dos null ya sea el permiso o arbol
    Otro problema es que tal al hacer el join me van a venir datos repetidos, por ejemplo

    Para un permiso tengo 3 Arbol1 y 2 Arbol2 la consulta me devolveria 6 registros

    ---------------------------------------------

    Lo otro que se me cruzo por la cabeza tambien es hacer tres query, una para Permisos otra para Arbol1 y otra para Arbol2 y que segun lo autocomplete que complete vaya a buscar a la base y despues tratar de relacionarlos desde codigo pero tambien tengo mis problemas con eso


    Espero puedan ayudarme


    Saludos

    martes, 7 de enero de 2020 15:32

Respuestas

  • hola

    se deberia ver en la vista y deberia discriminar si pertenece al arbol1 o arbol2

    no necesitas ninguna discriminacion porque en la tabla Arbol defines dos registros con Nombre: Arbol1 y Arbol2

    despues relacionas estos registros con los permisos por medio de la tabla intermedia de relacion, que permite la relacion mucho a muchos

    >>el diseño no lo hice yo

    pues entonces aconsejaria a quien realizo ese diseño estudio sobre normalizacion de base de datos porque no es correcto lo que quiere realizar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 8 de enero de 2020 13:51

Todas las respuestas

  • hola

    porque ese diseño de Arbol1 y 2 ? eso no esta bueno

    Si tienes una tabla de Permiso que quieres relacionar podrias generar una relacion muchos a muchos

    Permisos
    IdPermiso
    Nombre (unique)
    
    Arbol
    IdArbol
    Nombre
    
    PersmisoArbol
    IdPermiso  PK
    IdArbol PK

    entonces relacionas por medio de la tabla intermedia

    Generar dos tablas con el 1 y 2 solo eso ya indica que el diseño del modelo no esta bueno

    Nota: PK es la primary key

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 8 de enero de 2020 1:01
  • hola

    porque ese diseño de Arbol1 y 2 ? eso no esta bueno

    Si tienes una tabla de Permiso que quieres relacionar podrias generar una relacion muchos a muchos

    Permisos
    IdPermiso
    Nombre (unique)
    
    Arbol
    IdArbol
    Nombre
    
    PersmisoArbol
    IdPermiso  PK
    IdArbol PK

    entonces relacionas por medio de la tabla intermedia

    Generar dos tablas con el 1 y 2 solo eso ya indica que el diseño del modelo no esta bueno

    Nota: PK es la primary key

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    Hola buen dia Leandro, eso que puse fue en lineas generales para resumir porque es un poco mas complejo, el diseño no lo hice yo

    Y Arbol1 y Arbol2 contienen nodos con una estructura totalmente distinta

    Aunque tal vez si me podria servir una tabla auxiliar, pero como ves hice un diseño de tabla de como se deberia ver en la vista y deberia discriminar si pertenece al arbol1 o arbol2

    Muchas gracias

    Saludos


    miércoles, 8 de enero de 2020 13:07
  • hola

    se deberia ver en la vista y deberia discriminar si pertenece al arbol1 o arbol2

    no necesitas ninguna discriminacion porque en la tabla Arbol defines dos registros con Nombre: Arbol1 y Arbol2

    despues relacionas estos registros con los permisos por medio de la tabla intermedia de relacion, que permite la relacion mucho a muchos

    >>el diseño no lo hice yo

    pues entonces aconsejaria a quien realizo ese diseño estudio sobre normalizacion de base de datos porque no es correcto lo que quiere realizar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 8 de enero de 2020 13:51