Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marlon Souza

[Resolvido] relacionamento de tabelas

Recommended Posts

Amigos do imasters,

vejam se podem me dar um help,

tenho 3 tabelas que preciso fazer o relacionamento entre si (que já estão relacionadas por id's), porem eu preciso fazer com que os dados sejam exibidos na minha pagina(o que nem comecei a desenvolver, pois estou somente com os comandos sql).

 

segue as 3 tabelas

 

PLANOS - planos
id_pla | nome_pla | link_pla | status_pla
Onde:

id_pla = id da tabela de planos

nome_pla = nome do plano

link_pla= link url

status_pla = status do plano

 

PLANO ESPECIALIDADE ÁREA - espe_area
id_pee | id_pes | id_esp | id_are
Onde:

id_pee = id da tabela de especialidade area

id_pes = id do usuario

id_esp = id da especialidade

id_are = id da area

 

 

RELACIONAMENTO ENTRE PLANO E ESPECIALIDADE AREA - espe_plano
id_pep | id_pla | id_pee
id_pep = id_da tabela de relacionamento

id_pla =id da tabela de planos

id_pee =id da tabela de especialidade area

 

 

E meu SQL ta assim

 

SELECT  *
FROM espe_plano AS pep
JOIN espe_area as pee
ON pee.id_pee=pep.id_pee
LEFT JOIN planos AS pla
ON pla.id_pla=pep.id_pla
WHERE pee.id_pes=2 
AND pee.id_esp=37

Para trazer o resultado selecionado esta tudo ok, agora como eu faço pra trazer os outros planos (os que estão duplicados), que não esta na tabela de relacionamento??

 

Se eu coloco uma negação ele duplica o resultado

 

SELECT  *
FROM espe_plano AS pep
JOIN espe_area as pee
ON pee.id_pee=pep.id_pee
LEFT JOIN planos AS pla
ON pla.id_pla!=pep.id_pla
WHERE pee.id_pes=2 
AND pee.id_esp=37


id_pep			|id_pla			|id_pee	|id_esp			|id_pla			|nome_pla			|link_pla	|status_pla
2 			|5 			|1130 	|37 			|3 			|Plano Tres 	|		|1
1 			|3 			|1130 	|37 			|5 			|Plano Cinco 	|		|1
1 			|5 			|1130 	|37 			|6			|Plano Seis 	|		|1
2 			|5 			|1130 	|37 			|6			|Plano Seis 	|		|1
2 			|5 			|1130 	|37 			|7			|Plano Sete	|		|1
1 			|5 			|1130 	|37 			|7			|Plano Sete	|		|1
2 			|5 			|1130 	|37 			|8			|Plano Oito 	|		|1
1 			|5 			|1130 	|37 			|8			|Plano Oito		|		|1
1 			|5 			|1130 	|37 			|9			|Plano Nove	|		|1
2 			|5 			|1130 	|37 			|9			|Plano Nove 	|		|1
1 			|5 			|1130 	|37 			|10			|Plano Dez			|		|1
2 			|5 			|1130 	|37 			|10			|Plano Dez		|		|1
1 			|5 			|1130 	|37 			|11			|Plano Onze	|		|1
2 			|5 			|1130 	|37 			|11			|Plano Onze	|		|1

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvido

 

basta eu armazenar no meu primeiro select quais foram os ids dos planos e depois dar um not in(ids dos planos)

 

No meu primeiro select

 

SELECT * FROM espe_plano AS pep JOIN espe_area as pee ON pee.id_pee=pep.id_pee LEFT JOIN planos AS pla ON pla.id_pla=pep.id_pla WHERE pee.id_pes=2 and pee.id_esp=37

 

O resultado veio 2 ids (3 e 5), entao eu guardo em um array os ids e faco outra consulta pra trazer os planos sem repetir e que nao estao na tabela de relacionamento

 

SELECT * FROM planos
WHERE id_pla not in(3,5)

Assim o resultado é o desejado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.