I have a question about how I should mount SELECT
for a given function.
The scenario is as follows:
I have 4 tables: Tab_Pessoa - Tab_Cliente - Tab_Autorizado - Tab_Cliente_Autorizado
.
So the Tab_Pessoa
is related to Tab_Cliente
and Tab_Autorizado
-
The Tab_Cliente_Autorizado
is related to Tab_Cliente
and Tab_Autorizado
.
Briefly, Tab_Pessoa
has the name field.
I want to get the following information: The authorized name of a particular client.
Otherwise for clarity:
In Tab_Pessoa
has the following records:
cod_pessoa | Nome
1 | Luis
2 | Carlos
3 | Paulo
In Tab_Cliente
has the following records:
cod_cliente | cod_pessoa
1 | 1
In Tab_Autorizado
has the following records:
cod_autorizado | cod_pessoa
1 | 2
2 | 3
In Tab_Cliente_Autorizado
has the following records:
cod_cliente_autorizado | cod_cliente | cod_autorizado
1 | 1 | 1
2 | 1 | 2
I want with cod_cliente = 1
I get the name of his authorized: Carlos and Paulo
I already mounted several SELECT's
but I did not succeed, my mind would initially be this SELECT
would be like this:
Select pes.nome from tab_Cliente_Autorizado cli_aut
inner join tab_Cliente cli on cli.cod_cliente = cli_aut.cod_cliente
inner join tab_Pessoa pes on cli.cod_pessoa = pes.cod_pessoa
where cli_aut.cod_cliente = 1
But what I get is the client's name 2 times.
I'm grateful for any suggestions right now.
Update - Script of tables
- Person Table
go
create table tab_Pessoa(
cod_pessoa int identity(1,1) not null,
nome nvarchar(200) null,
constraint pk_pessoa Primary Key (cod_pessoa))
go
- Client Table
go
create table tab_Cliente(
cod_cliente int identity(1,1) not null,
cod_pessoa int not null,
constraint pk_cliente Primary Key (cod_cliente),
constraint fk_tab_Cliente_tab_Pessoa foreign key(cod_pessoa) references tab_Pessoa(cod_pessoa))
- Authorized Table
go
create table tab_Autorizado(
cod_autorizado int identity(1,1) not null,
cod_pessoa int not null,
constraint pk_autorizado Primary Key (cod_autorizado),
constraint fk_tab_Autorizado_tab_Pessoa foreign key(cod_pessoa) references tab_Pessoa(cod_pessoa))
go
- Client Table - Authorized
go
create table tab_Cliente_Autorizado(
cod_cliente_autorizado int identity(1,1) not null,
cod_cliente int not null,
cod_autorizado int not null,
constraint pk_cliente_autorizado Primary Key (cod_cliente_autorizado),
constraint fk_tab_Cliente_Autorizado_tab_Autorizado foreign key(cod_autorizado) references tab_Autorizado(cod_autorizado),
constraint fk_tab_Cliente_Autorizado_tab_Cliente foreign key(cod_cliente) references tab_Cliente(cod_cliente))
go