Exemplo de uma consulta SQL. o uso do operador de ponto

0

Nesta consulta, não entendi:

Quais são p1.Person e p2.Person .

    
por Patt 28.11.2016 / 07:47

1 resposta

0

Como o mcalex apontou que são referências de tabela, neste caso eles estão referenciando a mesma tabela duas vezes, quando ela é unida a si mesma. O Person bit contém o nome da pessoa (de acordo com o gráfico).

A consulta é a seguinte:

SELECT  p1.Person AS PERSON, p2.Person AS FRIEND_OF_FRIEND
FROM    PersonFriend pf1 
    JOIN Person p1 ON pf1.PersonID = p1.ID
    JOIN PersonFriend pf2 ON pf2.PersonID = pf1.FriendID
    JOIN Person p2 ON pf2.FriendID = p2.ID
WHERE   p1.Person = "Alice" and pf2.FriendID <> p1.ID

Analise cuidadosamente cada menção de uma tabela na cláusula FROM . Você poderá ver que em cada menção há uma abreviação atribuída (por exemplo, JOIN Person p1 ). Você acaba com os seguintes nomes abreviados / de referência: p1 , p2 , pf1 e pf2 . Enquanto p1 e p2 referenciam a tabela Person , pf1 e pf2 reference PersonFriend .

Em circunstâncias normais, você pode usar todo o nome de uma tabela como Person ou PersonFriend no JOINS , mas como há várias associações automáticas nessa consulta, você precisa de outra maneira de identificar quais campos de instância específica das tabelas que você quer dizer.

Editar: A referência fornecida pelo mcalex ( Usando uma tabela duas vezes em uma consulta ) mais algumas informações sobre o significado de uma auto-união.

    
por 28.11.2016 / 08:46

Tags