none
Por favor con Inner Join multiple... RRS feed

  • Pregunta

  • Hola como estan… Llevo como 7 meses programando con SQL Server pero hasta ahora no habia usado de una manera avanzada si se puede decir Inner Joint, entonces estoy empezando a usarlos… Sera que me ayudan a convertir esta consulta que hice con multiples Where a usarla con Inner Join…

     

    TABLA CUADERNOS = Cu

    TABLA Status = St

    TABLA Caracteristicas = Ft

    TABLA Personas = Pe

    TABLA Personas_Cuadernos = PyC

     

     

    SELECT Cu.Cuadernos, St.Descripcion, Ft.Caracteristicas FROM Cuadernos AS Cu, Status AS St, Caracteristicas AS Ft, Personas AS Pe, Personas_Cuadernos AS PyC

    WHERE Pe.ID_Per = PyC.ID_Per AND

                  PyC.ID_Cua = Cu.ID_Cua AND

                  Cu.Id_Status = St.ID_Sta AND

                  Pe.ID_Per = Ft.ID_Per AND 

          Pe.Per_ID = '@valor'

     

     

     

    He estado intentando pero aun no me sale…

     

     

    SELECT Cu.Cuadernos, St.Descripcion, Ft.Caracteristicas FROM

    Cuadernos INNER JOIN Personas_Cuadernos ON Cuadernos.ID_Cua = Personas_Cuadernos.ID_Cua,

    Status INNER JOIN Cuadernos AS Cu ON Status.ID_Sta = Cu.Id_Status,

    Personas INNER JOIN Caracteristicas ON Personas.ID_Per = Caracteristicas.ID_Per,

    Personas AS Pe INNER JOIN Personas_Cuadernos AS PyC ON Per.ID_Per = PyC.ID_Per

    WHERE Pe.Per_ID = '@valor'

     

    Esta es la relacion de la tabla  “por sia caso” aunque creo que no se entiene muy bien…

    Relaciones:

    Personas: 1 a varios Personas_Cuadernos “Pueden haber varios registros de una misma persona en Personas_Cuadernos”

    Personas: 1 a varios Caracteristicas “Pueden haber varios registros de una misma persona en Caracteristicas”

    Cuadernos: 1 a varios Personas_Cuadernos “Pueden haber varios registros de cuadernos en la tabla Personas_Cuadernos las cuales obviamente le pertenecen a una persona en particular”

    Status: 1 a 1 Cuadernos “Un Cuaderno solo puede tener un status”

     

     

     

    De antemano le agradezco a todos por su gran ayuda…

    • Editado AdyIr lunes, 12 de abril de 2010 22:44
    lunes, 12 de abril de 2010 21:48

Respuestas

  • Si nos pones los scrips es mas fácil :) pero eso para otra.

    haces un where con clientes.. que no está ene l from igual por ahí viene tu problema, en cualquier caso para no liarnos he escrito la creación de tablas y un join que espero que te sirva de ayuda.

     

    create table [Status] (id_status int primary key, descrip varchar(10))
    go
    create table Caracteristicas(id_caracteristica int primary key,otro varchar(10))
    go
    create table cuadernos (id_cua int primary key,id_status int, otro varchar(10),
    constraint fk_cua_status foreign key (id_status) references [status])
    go
    create table personas (id_per int primary key, id_caracteristica int, otro varchar(10), 
        constraint fk_pers_carac foreign key (id_caracteristica) references caracteristicas)
    go
    create table personas_cuadernos (id_per int, id_cua int, otro varchar(10), 
    		constraint fk_per_cua_per foreign key (id_per) references personas,
    		constraint fk_per_cua_cua foreign key (id_cua) references Cuadernos,
    		constraint pk_per_cua primary key (id_per,id_cua))
    
    
    go
    select *
    from cuadernos cu
           inner join [Status] st 
              on cu.id_status=st.id_status
           inner join personas_cuadernos pyc 
              inner join personas pe
    				inner join Caracteristicas  ft
    				on ft.id_caracteristica=pe.id_caracteristica
                 on pe.id_per=pyc.id_per
           on cu.id_cua=pyc.id_cua
              
    Espero que te sirva
    Comparte lo que sepas, aprende lo que no sepas (FGG)
    lunes, 12 de abril de 2010 22:27
    Moderador

Todas las respuestas

  • Si nos pones los scrips es mas fácil :) pero eso para otra.

    haces un where con clientes.. que no está ene l from igual por ahí viene tu problema, en cualquier caso para no liarnos he escrito la creación de tablas y un join que espero que te sirva de ayuda.

     

    create table [Status] (id_status int primary key, descrip varchar(10))
    go
    create table Caracteristicas(id_caracteristica int primary key,otro varchar(10))
    go
    create table cuadernos (id_cua int primary key,id_status int, otro varchar(10),
    constraint fk_cua_status foreign key (id_status) references [status])
    go
    create table personas (id_per int primary key, id_caracteristica int, otro varchar(10), 
        constraint fk_pers_carac foreign key (id_caracteristica) references caracteristicas)
    go
    create table personas_cuadernos (id_per int, id_cua int, otro varchar(10), 
    		constraint fk_per_cua_per foreign key (id_per) references personas,
    		constraint fk_per_cua_cua foreign key (id_cua) references Cuadernos,
    		constraint pk_per_cua primary key (id_per,id_cua))
    
    
    go
    select *
    from cuadernos cu
           inner join [Status] st 
              on cu.id_status=st.id_status
           inner join personas_cuadernos pyc 
              inner join personas pe
    				inner join Caracteristicas  ft
    				on ft.id_caracteristica=pe.id_caracteristica
                 on pe.id_per=pyc.id_per
           on cu.id_cua=pyc.id_cua
              
    Espero que te sirva
    Comparte lo que sepas, aprende lo que no sepas (FGG)
    lunes, 12 de abril de 2010 22:27
    Moderador
  • Si nos pones los scrips es mas fácil :) pero eso para otra.

    haces un where con clientes.. que no está ene l from igual por ahí viene tu problema, en cualquier caso para no liarnos he escrito la creación de tablas y un join que espero que te sirva de ayuda.

     

    create table [Status] (id_status int primary key, descrip varchar(10))
    
    go
    
    create table Caracteristicas(id_caracteristica int primary key,otro varchar(10))
    
    go
    
    create table cuadernos (id_cua int primary key,id_status int, otro varchar(10),
    
    constraint fk_cua_status foreign key (id_status) references [status])
    
    go
    
    create table personas (id_per int primary key, id_caracteristica int, otro varchar(10), 
    
        constraint fk_pers_carac foreign key (id_caracteristica) references caracteristicas)
    
    go
    
    create table personas_cuadernos (id_per int, id_cua int, otro varchar(10), 
    
    		constraint fk_per_cua_per foreign key (id_per) references personas,
    
    		constraint fk_per_cua_cua foreign key (id_cua) references Cuadernos,
    
    		constraint pk_per_cua primary key (id_per,id_cua))
    
    
    
    
    
    go
    
    select *
    
    from cuadernos cu
    
           inner join [Status] st 
    
              on cu.id_status=st.id_status
    
           inner join personas_cuadernos pyc 
    
              inner join personas pe
    
    				inner join Caracteristicas  ft
    
    				on ft.id_caracteristica=pe.id_caracteristica
    
                 on pe.id_per=pyc.id_per
    
           on cu.id_cua=pyc.id_cua
    
              
    
    
    Espero que te sirva
    Comparte lo que sepas, aprende lo que no sepas (FGG)

     

    Hola amigo muchas gracias por tu ayuda, ya corregi la consulta lo que pasa es que le habia cambiado los nombres a los campos... Luego que lo revise comento que tal... Gracias de nuevo...

    lunes, 12 de abril de 2010 22:44