Consulta sql entre 2 tabelas
21/03/2013
0
Estou treinando na parte de sql e gostaria de tirar algumas duvidas.
1. Instalei o xampp com o apache e mysql ativo
2. Tenho um pequeno form em php para a busca
3. Tenho 2 tabelas: "ips" e "ssid"
3.1 A tabela "ips" contem: cod (chave primaria), ip, descricao, codssid (chave estrangeira com codssid da tabela ssid), qos
3.2 A tabela "ssid" contem: codssid (chave primaria), descricao, latitude/longitude
A principio tenho um "sql" para buscar o "ip" e "descricao" da tabela "ips". Segue abaixo:
$sql = "select ip, descricao from ips where descricao LIKE '% . $busca . %' OR ip LIKE '% . $busca . %' ORDER BY descricao"; // Estou longe de onde estou fazendo o treinamento, mas acredito que seja mais ou menos isso a busca :D
O que eu gostaria de saber é se posso incluir a tabela "ssid" na consulta, e que me retorne a "descricao" desse tabela sem duplicar os dados. Teria como realizar isso?
Elias Pereira
Posts
22/03/2013
Alex Lekao
Acredito que poderá usar com o join.
teste assim para ver se da certo.
select ips.ip, ips.descricao,ssid.descricao from ips
left join ssid on ssid.codssid = ips.codssid
where ips.descricao LIKE '% . $busca . %' OR ips.ip LIKE '% . $busca . %' ORDER BY ips.descricao
Espero ter ajudado.
Abraco.
Alex - Lekao
22/03/2013
Guilherme Sousa
Abraço, Guilherme
22/03/2013
Elias Pereira
Obrigado pela ajuda! Funcionou exatamente como eu esperava! :)
@Guilherme,
Mas é exatamente isso que preciso, pois antes eu fazia a busca pela descricao. Agora consigo realizar a busca pelo descricao, ip e ssid_desc. Coloquei o INNER JOIN para testar, mas algumas buscas que eu fiz e sabia que existiam dados para isso não apareceram. Obrigado mesmo assim, pois entendi a diferença entre as opções.
22/03/2013
Guilherme Sousa
Olhe também esse artigo no Code Project. Ele exemplifica de modo gráfico os joins no SQL. Com as imagens fica bem fácil saber o que você realmente deseja que seja retornado na consulta.
http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
Abraço, Guilherme
22/03/2013
Alex Lekao
Fico feliz em ter podido ajudar.
eu particularmente não entendo muito bem a diferença entre os dois, mas uso sempre o left e sempre tem dado certo, acredito que seja por causa dos condicionais que coloco no where.
Mas já peguei o link que o Guilherme passou para dar uma estuda, afinal conhecimento nunca eh demais(obrigado Guilherme).
Mas eh isso ae, precisando posta ai que a gente ajuda no que der... rsrsr
Abraco.
Alex - Lekao
22/03/2013
Bruno Leandro
22/03/2013
Guilherme Sousa
Abraços, Guilherme
22/03/2013
Alex Lekao
obrigadao galera... essas dicas e sugestão de blogs, sites, fóruns, etc, etc... tem sido muito útil para mim.
Obrigado.
Abraco.
Alex - Lekao
22/03/2013
Alex Lekao
Realmente as imagens são bem ilustrativas, fica bem claro.
Obrigado pela dica.
Esse site sera mais um dos meus favoritos no navegador.
Abraco.
Alex - Lekao
22/03/2013
Guilherme Sousa
Depois que eu comecei mexer com SQL todo dia e surgiram problemas reais eu tive que aprender SQL de verdade.
22/03/2013
Alex Lekao
apesar de já ser "tiosao"... eu estou fazendo faculdade so agora, e estamos vendo banco de dados na faculdade também, e isso foi uma das matérias que foram passadas rescentemente, e eu não as vi... rsrsr
mas eu vi varias opções de joins no curso de sql que fiz, mas como uso basicamente para ver o que tem na tabela da direita que seja igual na da esquerda, basicamente o que quero eh o que esta na tabela da esquerda mesmo, e o que preciso que seja mostrado referente das duas, uso na clausula where as condicionais para limitar ou mostrar o conteúdo da tabela da direita.
então por isso não me ative muito ao uso da inner join.
mas foi útil sim.
obrigado.
Abraco.
Alex - Lekao
Clique aqui para fazer login e interagir na Comunidade :)