Inner join, cross join, left join

Para fazer um join em alguma tabela é nessario ter um chave estrengeira que referência a chave primaria da tabela que eu quero relacionar…??ou posso relacionar apenas por campos…??

Nao precisa de chave estrangeira.

Rafael

[quote=Rafael Steil]Nao precisa de chave estrangeira.

Rafael[/quote]

mas é uma boa pratica

Amigo, sem uma chave estrangeira o que você estará fazendo na verdade é um plano cartesiano, apenas multiplicando os valores de uma tabela com os valores da outra, gerando normalmente informações inconsistentes…

A concepção do ‘join’ é justamente para padronizar isso…

você pode muito bem usar um plano cartesiano:

Select * from pessoa, endereco

Mas o join, principalmente em SGBDs e bancos como o MSSQLServer, o Oracle, o Postgress… obriga a cláusola ‘on’ para forçar essa consistência dos dados e evitar erros, já em bancos como o informix o jeito é um select simples mesmo como a cláusola where… o que alguns também chamam de join, quando na verdade acredito que a concepção seja outra…

Cara, no ON eu não sou obrigado a usar uma chave, posso usar o campo que eu bem entender