Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Filipa

Join que mostre vários dados de um só id

Recommended Posts

Filipa

Eu tenho 3 tabelas: "Terceiros", "Morada_Terceiro", "Contactos_Terceiro". O objetivo era: seria inserido um terceiro, o mesmo seria listado, fosse-lhe atribuído uma morada e um contacto, no entanto gostaria que fosse possível atribuir várias moradas a um só terceiro. Utilizei primeiro o INNER JOIN nas 3 tabelas e não foi possível, passei para o LEFT JOIN e quando era introduzido mais que uma morada ou contacto a um terceiro era listado a mesma informação mais que uma vez, acabei por utilizar o RIGHT JOIN e o FULL JOIN e nada. 

//Tabela Terceiros 


	$sql="SELECT Terceiros.*, Email, Telefone, Telemovel, TipoC, Morada, Localidade, CodPostal FROM ((Terceiros INNER JOIN  Contactos_Terceiro on  Terceiros.Numero = Contactos_Terceiro.Numero ) INNER JOIN Morada_Terceiro on Terceiros.Numero = Morada_Terceiro.Numero )";
	if(isset($pesq))
		$sql.=" where Nome like '$pesq' ";
	    $sql.=" limit $ini, $tp";
	    $res=$lig->query($sql); 
	//Tabela Contactos_Terceiro
  
  $sql="SELECT  Contactos_Terceiro.*, Nome FROM  Contactos_Terceiro INNER JOIN Terceiros on (Terceiros.Numero =  Contactos_Terceiro.Numero)";
	if(isset($pesq))
	$sql.=" where Nome like '$pesq'";
	$sql.=" limit $ini, $tp";
	$res=$lig->query($sql);
	//Tabela Morada_Terceiro
  
  $sql="SELECT Morada_Terceiro.*, Nome FROM Morada_Terceiro INNER JOIN Terceiros on (Terceiros.Numero = Morada_Terceiro.Numero)";
	if(isset($pesq))
		$sql.=" where Nome like '$pesq'";
	$sql.=" limit $ini, $tp";
	$res=$lig->query($sql);

 

Share this post


Link to post
Share on other sites
antseq
3 horas atrás, Filipa disse:

Eu tenho 3 tabelas: "Terceiros", "Morada_Terceiro", "Contactos_Terceiro". O objetivo era: seria inserido um terceiro, o mesmo seria listado, fosse-lhe atribuído uma morada e um contacto, no entanto gostaria que fosse possível atribuir várias moradas a um só terceiro. Utilizei primeiro o INNER JOIN nas 3 tabelas e não foi possível, passei para o LEFT JOIN e quando era introduzido mais que uma morada ou contacto a um terceiro era listado a mesma informação mais que uma vez, acabei por utilizar o RIGHT JOIN e o FULL JOIN e nada. 

Viva,

Fiquei na dúvida se o seu problema está no inserir (INSERT) da informação (Terceiros, Contactos e Moradas)? ou se já tem o INSERT feito nas 3 tabelas e está a ter problemas na consulta (SELECT/JOIN) das tabelas?

* na consulta, se seleccionar parte da tabela "master" [Terceiros] + (join) "detail table" [Contactos ou Moradas], terá sempre "repetido" os dados "master" seleccionados.

* porque não faz 3 selects na consulta de um determinado Terceiro "xxx":
- CABEÇALHO: SELECT * FROM Terceiros WHERE Terceiros.Numero = xxx
- GRELHA-CONTACTOS: SELECT * FROM Contactos_Terceiro WHERE Contactos_Terceiro.Numero = xxx
- GRELHA-MORADAS: SELECT * FROM Morada_Terceiro WHERE Morada_Terceiro.Numero = xxx

cps,

Share this post


Link to post
Share on other sites
Filipa

O meu problema é no JOIN mesmo, o insert já se encontra feito sem nenhum problema.

O problema é que eu não queria fazer uma consulta de um determinado Terceiro, mas sim deles todos. O que pretendo fazer é o seguinte: tenho um bootstrap popup onde quando é clicado aparece informações relacionados com o Terceiro selecionado, a sua morada e contactos. Aquele ID  pode pussuir  várias moradas, ou até mesmo contactos e é exatamente onde está a minha dúvida. Quando insiro uma nova morada um ID que já possui a mesma, duplica-me os dados, vou explicar melhor ainda:

O que deveria aparecer:

112 Joana -> Rua da Santa da Maria, 964867594, 213468658

112 Joana -> Rua da Praceta de Jesus Cristo, 934568794, 315839576

O que aparece:

112 Joana -> Rua da Santa da Maria, 964867594, 213468658

112 Joana -> Rua da Santa da Maria, 964867594, 213468658

Share this post


Link to post
Share on other sites
M6

Consegues mostrar o modelo de dados e a query que tens relativa a esse resultado?


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Filipa
29 minutos atrás, M6 disse:

Consegues mostrar o modelo de dados e a query que tens relativa a esse resultado?

 

 Em relação ao modelo de dados, aqui não me perimitem enviar imagens e a  query é o que se encontra por baixo da pergunta

Edited by Filipa

Share this post


Link to post
Share on other sites
M6

Tens 3 queries na pergunta...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Filipa
2 minutos atrás, M6 disse:

Tens 3 queries na pergunta...

É esta:

 $sql="SELECT Terceiros.*, Email, Telefone, Telemovel, TipoC, Morada, Localidade, CodPostal FROM ((Terceiros INNER JOIN Contactos_Terceiro on Terceiros.Numero = Contactos_Terceiro.Numero ) INNER JOIN Morada_Terceiro on Terceiros.Numero = Morada_Terceiro.Numero )"; 

Edited by Filipa

Share this post


Link to post
Share on other sites
M6

À priori a query parece-me bem, só vendo o modelo e os dados.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Filipa
7 minutos atrás, M6 disse:

À priori a query parece-me bem, só vendo o modelo e os dados.

Eu até enviaria mas aqui não me permitem enviar anexos

Share this post


Link to post
Share on other sites
M6

Coloca a imagem num site de partilha de imagens e mete aqui o link.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.