cassianooliver Postado Julho 13, 2008 Denunciar Share Postado Julho 13, 2008 Pessoal, como faço para fazer uma consulta em mais de uma tabela ao mesmo tempo?tipo, pesquisar uma palavra em 3 ou 4 tabelas ao mesmo tempo?é possível? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Julho 14, 2008 Denunciar Share Postado Julho 14, 2008 Pessoal, como faço para fazer uma consulta em mais de uma tabela ao mesmo tempo?tipo, pesquisar uma palavra em 3 ou 4 tabelas ao mesmo tempo?é possível?Oi, 'cassianooliver' !A resposta para sua pergunta é sim. É possivel. É a forma de consultarmos os relacionamentos entre as tabelas.De maneira geral, fazemos isso usando JOINS O INNER JOIN retorna somente os dados que existirem nas duas tabelas do relacionamentoO LEFT JOIN retorna os dados que existirem na tabela da esquerda do relacionamentoO RIGHT JOIN retorna os dados que existirem no lado direito do relacionamento.O SELECT STRAIGHT_JOIN força o motor do MySQL ler o sql com join tal como foi escrito pelo programador. Sem a cláusula STRAIGHT_JOIN, o motor do MySQL escolhe o que para ele é a melhor forma de resolver a questão. O que nem sempre é verdade.Leia mais sobre este assunto no capítulo 6, seção 6.4.1.1. Sintaxe JOIN do manual do MySQl versão 4.1 em português.Convém que você estude mais sobre modelo relacional de bancos de dados e SQL. Um bom livro para tal é INTRODUCAO AO SISTEMA DE BANCO DE DADOS - DATE, C. J. ED. CAMPUS. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Julho 15, 2008 Autor Denunciar Share Postado Julho 15, 2008 Oi, 'cassianooliver' !A resposta para sua pergunta é sim. É possivel. É a forma de consultarmos os relacionamentos entre as tabelas.De maneira geral, fazemos isso usando JOINSO INNER JOIN retorna somente os dados que existirem nas duas tabelas do relacionamentoO LEFT JOIN retorna os dados que existirem na tabela da esquerda do relacionamentoO RIGHT JOIN retorna os dados que existirem no lado direito do relacionamento.O SELECT STRAIGHT_JOIN força o motor do MySQL ler o sql com join tal como foi escrito pelo programador. Sem a cláusula STRAIGHT_JOIN, o motor do MySQL escolhe o que para ele é a melhor forma de resolver a questão. O que nem sempre é verdade.Leia mais sobre este assunto no capítulo 6, seção 6.4.1.1. Sintaxe JOIN do manual do MySQl versão 4.1 em português.Convém que você estude mais sobre modelo relacional de bancos de dados e SQL. Um bom livro para tal é INTRODUCAO AO SISTEMA DE BANCO DE DADOS - DATE, C. J. ED. CAMPUS.Olá Dênis,obrigado pela atenção..bom, na verdade não há relação entre as tabelas...sendo mais específico na dúvida..To montando um sistema de tags...aí quando o visitante clicar numa tag, quero pesquisá-la em várias tabelas, eventos, vídeos, fotos, etc....seria isso...acho que agora me expliquei melhor... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Julho 15, 2008 Denunciar Share Postado Julho 15, 2008 http://forum.imasters.uol.com.br/index.php?showtopic=224851 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Julho 16, 2008 Autor Denunciar Share Postado Julho 16, 2008 (editado) http://forum.imasters.uol.com.br/index.php?showtopic=224851So agora vi sua resposta, vou olhar...to tentando fazer assim:<?php $tag = $_GET["tag"]; $sql = "SELECT coberturas.evento, eventos.evento, videos.evento FROM coberturas, eventos, videos WHERE coberturas.evento LIKE '%" . $tag . "%' OR eventos.evento LIKE '" . $tag . "' OR videos.evento LIKE '" . $tag . "'"; $busca = mysql_query($sql); $total = mysql_num_rows($busca); if($total == 0) { echo "<h2>Desculpe, nenhum registro foi localizado com os dados fornecidos!</h2>"; } else { if($total == 1) { echo "<h2>$total registros localizados</h2>"; } else { echo "<h2>Foram localizados $total registros</h2>"; } echo $total; } ?> ta sempre retornando 0.. e tem registros nas tabelas com as palavras que pesquiso... ops... consegui! SELECT * FROM coberturas, eventos, videos WHERE coberturas.evento LIKE '%" . $tag . "%' OR eventos.evento LIKE '" . $tag . "' OR videos.evento LIKE '" . $tag . "'" agora complicou, como montar o resultado da busca... tipo, dividir os resultados encontrados nas coberturas, eventos e vídeos, é possível? tipo, se eu fizer isso: $cobertura = $resultado["evento"];num dá pra saber se é no campo evento da tabela, cobertura, eventos ou vídeos... Editado Julho 16, 2008 por cassianooliver Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Julho 16, 2008 Autor Denunciar Share Postado Julho 16, 2008 bom, consegui aqui, mas foi meio trabalhoso...<?php $tag = $_GET["tag"]; $sql = "INSERT INTO tags (tag) VALUES ('$tag')"; $query = mysql_query($sql); $sql_c = "SELECT id, evento FROM coberturas WHERE evento LIKE '%" . $tag . "%'"; $busca_c = mysql_query($sql_c); $total_c = mysql_num_rows($busca_c); $sql_e = "SELECT id, evento FROM eventos WHERE evento LIKE '%" . $tag . "%'"; $busca_e = mysql_query($sql_e); $total_e = mysql_num_rows($busca_e); $sql_v = "SELECT id, evento FROM videos WHERE evento LIKE '%" . $tag . "%'"; $busca_v = mysql_query($sql_v); $total_v = mysql_num_rows($busca_v); if($total_c == 0 && $total_e == 0 && $total_v == 0) { echo "<h2>Desculpe, nenhum registro encontrado para <u>" . $tag . "</u>!</h2>"; exit; } while($resultado_c = mysql_fetch_array($busca_c)) { $cid = $resultado_c["id"]; $cobertura = $resultado_c["evento"]; echo "<strong>Cobertura: </strong><a href=\"index.php?pagina=cobertura&cid=" . $cid . "\">" . $cobertura . "</a><br />"; } while($resultado_e = mysql_fetch_array($busca_e)) { $eid = $resultado_e["id"]; $evento = $resultado_e["evento"]; echo "<strong>Evento: </strong><a href=\"index.php?pagina=evento&eid=" . $eid . "\">" . $evento . "</a><br />"; } while($resultado_v = mysql_fetch_array($busca_v)) { $vid = $resultado_v["id"]; $video = $resultado_v["evento"]; echo "<strong>Vídeo: </strong><a href=\"index.php?pagina=video&vid=" . $vid . "\">" . $video . "</a><br />"; } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
cassianooliver
Pessoal, como faço para fazer uma consulta em mais de uma tabela ao mesmo tempo?
tipo, pesquisar uma palavra em 3 ou 4 tabelas ao mesmo tempo?
é possível?
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.