Como usar existe, UNIQUE, distinto, e sobreposições em instruções SQL

Dentro da cláusula WHERE encontra-se muitas possibilidades de modificar a instrução SQL. Entre estas possibilidades são a existir, UNIQUE, distinto, e sobreposições predicados. Aqui estão alguns exemplos de como usá-los em suas instruções SQL.

EXISTE

Você pode usar o EXISTE predicado em conjunto com uma subconsulta para determinar se a subconsulta retorna nenhuma linha. Se a subconsulta não retorna pelo menos uma linha, esse resultado satisfaz o EXISTE condição e executa a consulta externa. Considere o seguinte exemplo:

SELECIONAR FirstName, LastNameFROM CUSTOMERWHERE EXISTE (SELECT DISTINCT CustomerIDFROM SALESWHERE SALES.CustomerID = CUSTOMER.CustomerID) -

Aqui tabela SALES contém todas as transações de vendas da sua empresa. A tabela inclui a Identificação do Cliente do cliente que faz com cada compra, bem como outras informações pertinentes. A tabela CLIENTE contém nomes e sobrenomes de cada cliente, mas nenhuma informação sobre operações específicas.

A subconsulta no exemplo anterior retorna uma linha para cada cliente que fez pelo menos uma compra. A consulta externa retorna os primeiros e últimos nomes dos clientes que fizeram as compras que os registros da tabela SALES.

EXISTE é equivalente a uma comparação de CONTAGEM com zero, como a consulta a seguir mostra:

SELECIONAR FirstName, LastNameFROM CUSTOMERWHERE 0 lt;> (SELECT COUNT (*) FROM SALESWHERE SALES.CustomerID = CUSTOMER.CustomerID) -

Para cada linha na tabela de vendas que contém um Identificação do Cliente que é igual a uma Identificação do Cliente na tabela do CLIENTE, esta declaração exibe o Primeiro nome e Último nome colunas na tabela de clientes. Para cada venda na tabela de vendas, portanto, a declaração mostra o nome do cliente que fez a compra.

UNIQUE

Como você faz com o EXISTE predicado, você usa o UNIQUE predicado com uma subconsulta. Apesar de EXISTE predicado avaliar para verdadeiro somente se a subconsulta não retorna pelo menos uma linha, a UNIQUE predicado avaliar como True somente se não há duas linhas retornadas pela subconsulta são idênticos. Em outras palavras, o UNIQUE predicado avaliar como True somente se todas as linhas que seus subconsulta não retorna são únicos.

Considere o seguinte exemplo:

SELECIONAR FirstName, LastNameFROM CUSTOMERWHERE UNIQUE (SELECT CustomerID DE SALESWHERE SALES.CustomerID = CUSTOMER.CustomerID) -

Esta declaração recupera os nomes de todos os novos clientes para os quais a venda registros da tabela apenas uma venda. Porque um valor nulo é um valor desconhecido, dois valores nulos não são considerados iguais para cada outro quando o UNIQUE palavra-chave é aplicado a uma tabela de resultados que contém apenas duas linhas nulos, os UNIQUE predicado avaliar para True.

DISTINCT

o DISTINCT predicado é semelhante ao UNIQUE predicado, exceto na forma como trata nulos. Se todos os valores em uma tabela de resultados são UNIQUE, em seguida, eles também são DISTINCT de um para o outro.

No entanto, ao contrário do resultado do UNIQUE predicado, se o DISTINCT palavra-chave é aplicado a uma tabela de resultados que contém apenas duas linhas nulos, os DISTINCT predicado avaliar para False. Dois valores nulos são não considerados distintos um do outro, enquanto que, ao mesmo tempo que eles são considerados como sendo única.

Esta estranha situação parece contraditório, mas há uma razão para isso. Em algumas situações, você pode querer tratar dois valores nulos tão diferentes um do outro - nesse caso, usam o UNIQUE predicado. Quando você quiser tratar os dois valores nulos como se eles são o mesmo, use o DISTINCT predicado.

sobreposições

Você usa o sobreposições predicado para determinar se dois intervalos de tempo sobrepõem uns aos outros. Esse predicado é útil para evitar conflitos de agenda. Se os dois intervalos se sobrepõem, o predicado retorna um valor True. Se eles não se sobrepõem, o predicado devolve um valor falso.

Você pode especificar um intervalo de duas maneiras: ou como uma hora de início e uma hora de fim ou como um tempo de início e duração. aqui estão alguns exemplos:

(TIME '02:55:00', horas de intervalo '1') OVERLAPS (TIME '03:30:00', intervalo de '2' HOUR)

Este primeiro exemplo retorna um verdadeiro porque 03:30 for inferior a uma hora após a 2:55.

(TIME '09:00:00', TIME '09:30:00') OVERLAPS (TIME '09:29:00', TIME '09:31:00')

Este exemplo retorna uma verdade, porque você tem uma sobreposição de um minuto entre os dois intervalos.

(TIME '09:00:00', TEMPO '10: 00: 00 ') OVERLAPS (TIME '10: 15: 00', intervalo de '3' HOUR)

Este exemplo retorna uma falsa porque os dois intervalos não se sobrepõem.

(TIME '09:00:00', TIME '09:30:00') OVERLAPS (TIME '09:30:00', TIME '09:35:00')

Este exemplo retorna uma falsa porque, embora os dois intervalos são contíguos, que não se sobreponham.

menu