Ir para conteúdo

POWERED BY:

Arquivado

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

hostrl

Fazer select em várias tabelas

Recommended Posts

Olá, num arquivo .php sempre que preciso pega dados de várias tabelas utilizo várias variáveis com query.

Alguém saberia me dizer como faço somente um select em várias tabelas e exibir eles? VLW

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, num arquivo .php sempre que preciso pega dados de várias tabelas utilizo várias variáveis com query.

Alguém saberia me dizer como faço somente um select em várias tabelas e exibir eles? VLW

hostrl posta como você faz e em seguinda colocamos um exemplo de join sql pra você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

por ex:

 

$seleciona1 = mysql_query("SELECT * FROM tabela1");

$array1 = mysql_fetch_array($seleciona1);

 

$array1['campotal'];

 

$seleciona2 = mysql_query("SELECT * FROM tabela2");

$array2 = mysql_fetch_array($seleciona2);

$array2['outrocampo'];

 

Bom é mais ou menos isso sabe?

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

por ex:

 

$seleciona1 = mysql_query("SELECT * FROM tabela1");

$array1 = mysql_fetch_array($seleciona1);

 

$array1['campotal'];

 

$seleciona2 = mysql_query("SELECT * FROM tabela2");

$array2 = mysql_fetch_array($seleciona2);

$array2['outrocampo'];

 

Bom é mais ou menos isso sabe?

 

vlw

Vamos a um exemplo..

 

Temos 03 tabelas.

 

 

Primera => Devedores

dev_id

dev_nome

 

 

Segunda => Endereco

dev_id

end_rua

end_num

 

Terceira => Telefone

dev_id

tel_foneres

tel_fonecel

 

 

se o que você esta precisando seja desta forma. Em que aparti de uma consulta de uma tabela você vai pegar dados nas outras do mesmo cara, em cascata.

 

Forma do SQL

 

$sql="SELECT DISTINCT dev.dev_id, dev.dev_nome, end.dev_id, end.end_rua, end.end_num, tel.dev_id, tel.tel_foneres, tel.tel_fone_cel from Devedores dev, Endereco end, Telefone tel where dev.dev_id=end.dev_id AND dev.dev_id=tel.dev_id order by end.dev_nome ";

 

mysql_query($sql)or die ('Erro na query '.mysql_error());

 

// esse dev, end, tel => foi apelidos que dei as três tabelas.

 

essa é uma forma de fazer um join que pode ser feita com numero de infinitas tabelas.

 

informa se ajudou ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom gente estou com um problema meio parceido e vou aproveitar o tópico para ver se alguem pode me ajudar!!

 

Tipo, tenho 3 tabelas também, e estou usando um INNER JOIN, e a minha query é a seguinte:

 

SELECT tab_video.*,tab_bandas.*, tab_discografia.*

FROM

(tab_bandas

INNER JOIN tab_video ON tab_video.idArtista = tab_bandas.idBanda

INNER JOIN tab_discografia ON tab_bandas.idBanda = tab_discografia.idBanda )

WHERE tab_bandas.idBanda = '$idBanda'

LIMIT 0,20

 

A query funciona!!! Mas, quando não tem nenhum video ela retorna vazia ou seja a banda ta cadastrada a discografia também, mas se não tem video ela retorna vazia.

 

Minha pergunta é a seguinte !!

 

Tem como executar em uma só query essa pesquisa, sendo que mesmo se não tenha um video ou mesmo a discografia ela volte pelo menos os dados completos da banda?

 

Agradeço desde já a ajuda

Estou no aguardo

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso porque usando inner join ele soh retorna quando esta presente em todas as tabelas, na escola você aprendeu isso como intersseçao (U de cabeça pra baixo)

o que você quer eh left join q pega tudo q estiver na tabela a esquerda independente de ter correspondencia na tabela da direita e o que tiver correspondencia na tabe o que igual na tabela da direita, na escola isso seria o Uniao com interseçao

 

 

INNER JOIN -> A interseçao B

LEFT JOIN -> A uniao (A interseçao B )

 

sua query ficaria entao assim

 

 

 

SELECT tab_video.*,tab_bandas.*, tab_discografia.*

FROM

(tab_bandas

LEFT JOIN tab_video ON tab_video.idArtista = tab_bandas.idBanda

LEFT JOIN tab_discografia ON tab_bandas.idBanda = tab_discografia.idBanda )

WHERE tab_bandas.idBanda = '$idBanda'

LIMIT 0,20

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso porque usando inner join ele soh retorna quando esta presente em todas as tabelas, na escola você aprendeu isso como intersseçao (U de cabeça pra baixo)

o que você quer eh left join q pega tudo q estiver na tabela a esquerda independente de ter correspondencia na tabela da direita e o que tiver correspondencia na tabe o que igual na tabela da direita, na escola isso seria o Uniao com interseçao

 

 

INNER JOIN -> A interseçao B

LEFT JOIN -> A uniao (A interseçao B )

 

sua query ficaria entao assim

 

 

 

SELECT tab_video.*,tab_bandas.*, tab_discografia.*

FROM

(tab_bandas

LEFT JOIN tab_video ON tab_video.idArtista = tab_bandas.idBanda

LEFT JOIN tab_discografia ON tab_bandas.idBanda = tab_discografia.idBanda )

WHERE tab_bandas.idBanda = '$idBanda'

LIMIT 0,20

 

PERFECT GIESTA !!!!!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

OBRIGADO PELA AJUDA FUNCIONOU BELEZA

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.