Como usar Junte-se a um básico em SQL

Qualquer consulta SQL multitable é um tipo de junção. As tabelas de origem são unidas no sentido de que a tabela de resultados inclui informações retiradas de todas as tabelas de origem. O mais simples junção é um dois-mesa SELECIONAR que não tem nenhuma ONDE qualificadores cláusula: Cada linha da primeira tabela é associado a cada linha da segunda tabela.

A tabela de resultados é o produto cartesiano das duas tabelas de origem. O número de linhas da tabela resultado é igual ao número de linhas na tabela a primeira fonte multiplicado pelo número de linhas na tabela a segunda fonte.

Por exemplo, imagine que você é o gerente de pessoal para uma empresa e que parte de seu trabalho é manter registros de funcionários. A maioria dos dados do empregado, tais como endereço residencial e número de telefone, não é particularmente sensível. Mas alguns dados, como o salário atual, devem estar disponíveis apenas ao pessoal autorizado. Para manter a segurança das informações sensíveis, mantê-lo em uma tabela separada, que é protegido por senha.

Considere o seguinte par de mesas:

FUNCIONÁRIO DE COMPENSAÇÃO -------- ------------ EmpID EmployFName SalaryLName BonusCityPhone

Preencher as tabelas com alguns dados de exemplo:

EmpID FName LName Cidade Telefone ----- ----- ----- ---- ----- 1 Whitey Ford Laranja 555-10.012 Don Larson Newark 555-32.213 Sal Maglie Nutley 555-69.054 Bob Turley Passaic 555-8908Employ Abono salarial ------ ------ ----- 1 33000 100002 18000 20003 24000 50004 22000 7000

Criar uma tabela de resultados virtual com a seguinte consulta:

SELECT * FROM EMPREGADOS, COMPENSAÇÃO -

Aqui está o que a consulta produz:

EmpID FName LName Cidade Empregar Telefone Salário Bonus ----- ----- ----- ---- ----- ------ ------ ----- 1 Whitey Ford Laranja 555-1001 1 33000 100001 Whitey Ford Laranja 555-1001 2 18000 20001 Whitey Ford Laranja 555-1001 3 24000 50001 Whitey Ford Laranja 555-1001 4 22000 70002 Don Larson Newark 555-3221 1 33000 100002 Don Larson Newark 555- 3221 2 18000 20002 Don Larson Newark 555-3221 3 24000 50002 Don Larson Newark 555-3221 4 22000 70003 Sal Maglie Nutley 555-6905 1 33000 100003 Sal Maglie Nutley 555-6905 2 18000 20003 Sal Maglie Nutley 555-6905 3 24000 50003 Sal Maglie Nutley 555-6905 4 22000 70004 Bob Turley Passaic 555-8908 1 33000 100004 Bob Turley Passaic 555-8908 2 18000 20004 Bob Turley Passaic 555-8908 3 24000 50004 Bob Turley Passaic 555-8908 4 22000 7000

A tabela de resultados, que é o produto cartesiano das mesas e remuneração, contém redundância considerável. Além disso, não faz muito sentido. Ele combina todas as linhas de EMPREGADO com cada fileira de compensação.

As únicas linhas que transmitem informações importantes são aqueles em que o EmpID número que veio do EMPREGADO corresponde ao Empregar número que veio de compensação. Nestas linhas, nome e endereço de um empregado estão associados com a sua compensação.

Quando você está tentando obter informações úteis a partir de uma base de dados multitable, o produto cartesiano produzido por uma base participar é quase Nunca o que você quer, mas é quase sempre o primeiro passo para o que você quer. Ao aplicar restrições ao JUNTE-SE com um ONDE cláusula, você pode filtrar as linhas indesejadas.

menu