hostrl 0 Denunciar post Postado Fevereiro 16, 2008 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
mmngea 0 Denunciar post Postado Fevereiro 16, 2008 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
hostrl 0 Denunciar post Postado Fevereiro 16, 2008 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
mmngea 0 Denunciar post Postado Fevereiro 16, 2008 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
ricardo_vetor 0 Denunciar post Postado Fevereiro 18, 2008 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
giesta 29 Denunciar post Postado Fevereiro 18, 2008 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
ricardo_vetor 0 Denunciar post Postado Fevereiro 18, 2008 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