Como usar existe, original, distinta, e sobreposições em instruções sql

Dentro da cláusula WHERE reside muitas possibilidades de modificar a instrução SQL. Entre essas possibilidades são o existe, 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 cada compra, bem como outras informações pertinentes. A tabela CLIENTE contém nomes e sobrenomes de cada cliente, mas nenhuma informação sobre transaçõ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; gt; (SELECT COUNT (*) DE 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 mostra 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.

ÚNICO

Como você faz com o EXISTE predicado, você usa o ÚNICO predicado com uma subconsulta. Apesar de EXISTE predicado avaliada como True somente se a subconsulta não retorna pelo menos uma linha, a ÚNICO predicado avaliada como True somente se não há duas linhas retornadas pela subquery são idênticos. Em outras palavras, o ÚNICO predicado avaliada 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 ÚNICO palavra-chave é aplicado a uma tabela de resultados que contém apenas duas linhas nulas, as ÚNICO predicado avaliar para True.

DISTINCT



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

No entanto, ao contrário do resultado do ÚNICO predicado, se o DISTINCT palavra-chave é aplicado a uma tabela de resultados que contém apenas duas linhas nulas, as 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 ÚNICO predicado. Quando você quiser tratar os dois 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 se sobrepõem uns aos outros. Este 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 retorna um valor False.

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 uma duração. aqui estão alguns exemplos:

(TEMPO `02:55:00`, horas de intervalo para `1`) OVERLAPS (TEMPO `03:30:00`, INTERVALO `2` hora)

Este primeiro exemplo retorna uma verdadeira porque 03:30 é menos de uma hora após 2:55.

(TIME `9:00:00`, TIME `09:30:00`) OVERLAPS (TIME `9:29:00`, TIME `09:31:00`)

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

(TEMPO `09:00:00`, TEMPO `10: 00: 00 `) OVERLAPS (TEMPO `10: 15: 00`, INTERVALO `3` hora)

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

(TIME `9:00:00`, TIME `09:30:00`) OVERLAPS (TIME `9: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.


Publicações relacionadas