Há um tempo atrás (por volta de 2004) trabalhei como desenvolvedor back-end em uma equipe onde todos usavam a cláusula where joins. Como proponente do uso de junções internas/externas, mostrei a eles um exemplo de junção de cláusula where que ilustrou como poderia produzir resultados ambíguos dependendo dos dados e como as junções externas estavam livres desse problema.
Eu tenho que fazer a mesma apresentação, mas não consigo mais encontrar esse trecho. Está em algum lugar no meu arquivo de arquivos ao qual infelizmente não tenho acesso. Alguém tem um exemplo útil?
Isso só pode ser demonstrado em bancos de dados definidos com nível de compatibilidade 80 (ou SQL Server <= 2000).
Não deseja usar uma coluna de nome anulável para demonstrar? Ok, que tal uma coluna de chave estrangeira anulável?
Não sei por que você precisa demonstrar isso hoje - você simplesmente não deveria estar usando
*= / =*
junções, independentemente de poder reproduzir algum comportamento ambíguo - eles são obsoletos e não funcionarão em nenhum banco de dados que não suporte 80 compatibilidade nível. E se você estiver usando o nível de compatibilidade 80, precisará estar preparado para várias outras diferenças funcionais e possíveis alterações importantes quando finalmente atualizar.Qual é o comportamento real do nível de compatibilidade 80?
Maus hábitos: Apegar-se a antigos níveis de compatibilidade
Maus hábitos para chutar: usando junções de estilo antigo