Jump to content


Photo

Por Que Usar O Inner Join?


  • Faça o login para participar
4 replies to this topic

#1 Foxn

Foxn

    Alone in the dark

  • Usuários
  • 1230 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Programação, FLASH, JAVA SCRIPT, HTML, DHTML, XML, PHP e DELPHI

Posted 21/06/2004, 10:34

Estou trabalhando com Access e tive de fazer uma associação entre duas tabelas: conteudo e categoria - sendo que as duas possuem um campo categ_id para que seja feita a associação. As duas sintex sql abaixo realizam a mesma coisa:

Com INNER JOIN --------------------------------------------------------

SELECT conteudo.*, categoria.*
FROM conteudo
INNER JOIN categoria ON categoria.categ_id = conteudo.categ_id

-----------------------------------------------------------------------------

Sem INNER JOIN --------------------------------------------------------

SELECT conteudo.*, categoria.*
FROM conteudo, categoria
WHERE conteudo.categ_id = categoria.categ_id

-----------------------------------------------------------------------------

Agora, se funciona da mesma forma e no caso de associação entre três ou mais tabelas é muito mais simples sem o INNER JOIN (no caso de trabalhar com o Access) então qual a finalidade de se usar o INNER JOIN?

[]'s
<?php $Nome = "Renato B. Pacheco";

	$Ocupacao = "Programador PHP";

	$Ocupacao .= "<br /> Programador ASP";

	$Ocupacao .= "<br /> Programador Action Script";

	$Localizacao =  "São Paulo - SP - Brasil" ?>

#2 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 21/06/2004, 11:26

Os comandos SQL seguem padrões, e o ACCESS segue o padrão SQL/92, porém, as versões mais recentes tentam sempre manter a compatibilidade com versões mais antigas, isso faz com que 2 comandos diferentes façam a mesma coisa.

Link relacionado (um pequeno histórico):
http://www.eistec.hp...r/sqldelphi.htm
------
Mero mortal!

#3 Foxn

Foxn

    Alone in the dark

  • Usuários
  • 1230 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Programação, FLASH, JAVA SCRIPT, HTML, DHTML, XML, PHP e DELPHI

Posted 21/06/2004, 11:47

Valeu pela explicação, vou dar uma olhada no texto que você passou. Agora um cara me dizer que se usa só por que é padrão (que foi o que me disseram) é totalmente inaceitável.

Valeu.

Complemento:

Acho que vocês não entenderam o lance do padrão, olha só:

P: Porque usar INNER JOIN?
R: Por que é padrão.

------------------------------------------------

P: Porque usar INNER JOIN?
R: Os comandos SQL seguem padrões, e o ACCESS segue o padrão SQL/92, porém, as versões mais recentes tentam sempre manter a compatibilidade com versões mais antigas, isso faz com que 2 comandos diferentes façam a mesma coisa.

------------------------------------------------

Pequena diferença não é.


[]'s

Edição feita por: Foxn, 21/06/2004, 12:34.

<?php $Nome = "Renato B. Pacheco";

	$Ocupacao = "Programador PHP";

	$Ocupacao .= "<br /> Programador ASP";

	$Ocupacao .= "<br /> Programador Action Script";

	$Localizacao =  "São Paulo - SP - Brasil" ?>

#4 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 21/06/2004, 11:59

Valeu pela explicação, vou dar uma olhada no texto que você passou. Agora um cara me dizer que se usa só por que é padrão (que foi o que me disseram) é totalmente inaceitável.

Valeu.

[]'s

É bom trabalharmos com padrões e convenções sim. Se amanhã ou depois vc faltar qualquer outra pessoa poderá trabalhar no sistema/projeto pois o mesmo está definido de forma padronizada sendo fácil a sua interpretação.

Só uma opinião!
www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais

#5 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 21/06/2004, 11:59

O fato de ser "padrão" quer dizer que aquele mesmo SELECT, por exemplo, vai funcionar em qualquer sistema de banco de dados, seja Oracle, Sybase, MySQL, Access, Interbase, DB2, SQLServer, PostgreSQL, Progress...

Essa é a real vantagem de ser padrão. Mas quando esta programando, é muito complicado seguir padrões, sempre precisa-se de uma função para fazer isso ou uma para fazer aquilo, e, muitas vezes, aquela função só existe naquele banco de dados.

Porém, muitos também seguem vários padrões. Isso compatibiliza ainda mais os comandos, pelo menos, a sintaxe básica dos comandos mais simples costumam ser compativeis, com algumas particularidades aqui ou ali.

No que diz respeito a utilizar INNER JOIN ou não utilizar, isso vai depender exclusivamente do desenvolvedor... pode ser que em alguns casos a solução do problema se de apenas com a utilização de JOINS, mas isso é outra história.
:)

Ideologia:
A peça principal de qualquer projeto é sua documentação.
------
Mero mortal!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq