Cómo usar existe, único, distinto, y se superpone en sentencias SQL

Dentro de la cláusula WHERE se encuentra muchas posibilidades para modificar la instrucción SQL. Entre estas posibilidades son el EXISTS, único, distinto, y se superpone predicados. Estos son algunos ejemplos de cómo utilizar estos en sus sentencias SQL.

EXISTS

Puede utilizar el EXISTS predicado en conjunto con una subconsulta para determinar si la subconsulta devuelve ninguna fila. Si retorna la subconsulta al menos una fila, que satisface el resultado EXISTS condiciones, y se ejecuta la consulta externa. Considere el siguiente ejemplo:

SELECT Nombre, LastNameFROM CUSTOMERWHERE EXISTS (SELECT DISTINCT CustomerIDFROM SALESWHERE SALES.CustomerID = Cliente.Id del cliente) -

Aquí la tabla VENTAS contiene todas las transacciones de venta de su empresa. La tabla incluye la ID de cliente del cliente que hace que cada compra, así como otra información pertinente. La tabla CLIENTE contiene el nombre y apellido de cada cliente, pero no hay información sobre transacciones específicas.

La subconsulta en el ejemplo anterior devuelve una fila para cada cliente que ha realizado al menos una compra. La consulta externa devuelve los nombres y apellidos de los clientes que hicieron las compras que los registros de la tabla VENTAS.

EXISTS es equivalente a una comparación de CUENTA con cero, ya que la siguiente consulta muestra:

SELECT Nombre, LastNameFROM CUSTOMERWHERE 0 lt;> (SELECT COUNT (*) FROM SALESWHERE SALES.CustomerID = Cliente.Id del cliente) -

Para cada fila de la tabla de ventas que contiene un ID de cliente eso es igual a una ID de cliente en la tabla CLIENTE, esta declaración muestra el Nombre de pila y Apellido columnas en la tabla de clientes. Por cada venta en la tabla de ventas, por lo tanto, la declaración muestra el nombre del cliente que realizó la compra.

UNIQUE

Como lo hace con el EXISTS predicado, se utiliza el UNIQUE predicado con una subconsulta. Aunque el EXISTS predicado se evalúa como verdadera sólo si retorna la subconsulta al menos una fila, la UNIQUE predicado se evalúa como verdadera sólo si no hay dos filas devueltas por la subconsulta son idénticos. En otras palabras, la UNIQUE predicado se evalúa como verdadera sólo si todas las filas que sus retornos subconsulta son únicos.

Considere el siguiente ejemplo:

SELECT Nombre, LastNameFROM CUSTOMERWHERE UNIQUE (SELECT CustomerID DE SALESWHERE SALES.CustomerID = Cliente.Id del cliente) -

Esta declaración recupera los nombres de todos los nuevos clientes para los que los registros de la tabla VENTAS sólo una venta. Debido a que un valor nulo es un valor desconocido, dos valores nulos no se consideran iguales entre otro- cuando el UNIQUE palabra clave se aplica a una tabla de resultados que contiene sólo dos filas nulo, el UNIQUE predicado se evalúa como True.

DISTINCT

los DISTINCT predicado es similar a la UNIQUE predicado, excepto en la forma en que trata a los nulos. Si todos los valores de una tabla de resultados son UNIQUE, entonces son también DISTINCT de cada uno.

Sin embargo, a diferencia del resultado para el UNIQUE predicado, si el DISTINCT palabra clave se aplica a una tabla de resultados que contiene sólo dos filas nulo, el DISTINCT predicado se evalúa como False. Dos valores nulos son no considerado distintas unas de otras, mientras que al mismo tiempo se considera que ser único.

Esta extraña situación parece contradictorio, pero hay una razón para ello. En algunas situaciones, es posible que desee para tratar dos valores nulos como diferentes entre sí - en cuyo caso, utilizar la UNIQUE predicado. Cuando usted quiere tratar los dos nulos como si fueran la misma, utilice el DISTINCT predicado.

Superposiciones

Se utiliza el Superposiciones predicado para determinar si dos intervalos de tiempo se superponen entre sí. Este predicado es útil para evitar conflictos de programación. Si los dos intervalos se superponen, el predicado devuelve un valor True. Si no se superpongan, el predicado devuelve un valor Falso.

Se puede especificar un intervalo de dos maneras: o bien como hora de inicio y una hora de finalización o como hora de inicio y una duración. Aquí hay unos ejemplos:

(TIME '2:55:00', INTERVALO '1' HORA) se superpone (TIME '3:30:00', INTERVALO '2' HORA)

Este primer ejemplo devuelve una verdadera causa 3:30 es menos de una hora después de la 02:55.

(TIME '9:00:00', TIEMPO '9:30:00') se superpone (TIME '9:29:00', TIEMPO '9:31:00')

Este ejemplo devuelve una verdadera porque usted tiene una superposición de un minuto entre los dos intervalos.

(TIME '9:00:00', TIEMPO '10: 00: 00 ') se superpone (TIME '10: 15: 00', INTERVALO '3' HORA)

Este ejemplo devuelve un falso porque los dos intervalos no se solapan.

(TIME '9:00:00', TIEMPO '9:30:00') se superpone (TIME '9:30:00', TIEMPO '9:35:00')

Este ejemplo devuelve un falso porque a pesar de los dos intervalos son contiguos, no se superponen.




» » » » Cómo usar existe, único, distinto, y se superpone en sentencias SQL