Cómo utilizar consultas sql anidadas que son una prueba de la existencia

Video: Tutoriales SQL Server #32 - Inner Join

Una consulta devuelve datos de todas las filas de la tabla de SQL que satisfagan las condiciones de la consulta. A veces, muchas filas se returned- a veces sólo uno regresa. A veces ninguna de las filas de la tabla satisfacer las condiciones, y no se devuelven filas.

Se puede utilizar el EXISTE y NO EXISTE predicados para introducir una subconsulta. Esa estructura que indica si hay filas de la tabla se encuentra en la sub consulta de DE cláusula cumple con las condiciones en su DÓNDE cláusula.

EXISTE y NO EXISTE subconsultas son ejemplos de subconsultas correlacionadas.

UN consulta correlacionada en primer lugar se encuentra la mesa y la fila especificada por la instrucción envolvente y luego ejecuta la subconsulta en la fila en la tabla de la subconsulta que se correlaciona con la fila actual de la tabla de la declaración de cerramiento.

La sentencia devuelve ya sea una o más filas o devuelve ninguna. Si devuelve al menos una fila, la EXISTE predicado tiene éxito, y la declaración que encierra realiza su acción. En las mismas circunstancias, la NO EXISTE predicado falla, y la declaración de cerramiento no lleva a cabo su acción.

Después se procesa una fila de la tabla de la declaración de cerramiento, la misma operación se realiza en la siguiente fila. Esta acción se repite hasta que cada fila de la tabla de la declaración de cerramiento ha sido procesado.

EXISTE

Supongamos que usted es un vendedor de Trend Corporation y al que desea llamar a su gente de primer contacto en absoluto de organizaciones de clientes de Zetec en California. Pruebe la siguiente consulta:

Video: Ejemplo simple de SELECT anidado

SELECT * FROM CONTACTWHERE existe (SELECT * FROM CUSTOMERWHERE CustState = `CA`AND CONTACT.CustID = CUSTOMER.CustID) -

Note la referencia a CONTACT.CustID, que se hace referencia a una columna de la consulta externa y compararlo con otra columna, CUSTOMER.CustID, de la consulta interna. Para cada fila candidata de la consulta externa, se evalúa la consulta interna, mediante el CustID el valor de la corriente CONTACTO fila de la consulta externa en el DÓNDE cláusula de la consulta interna.

Esto es lo que sucede:

  1. los CustID columna vincula la tabla de contacto a la mesa del cliente.

  2. SQL se ve en el primer registro de la tabla CONTACTAR, encuentra la fila en la tabla de cliente que tiene el mismo CustID, y comprueba que la fila de CustState campo.

  3. Si CUSTOMER.CustState = `CALIFORNIA`, la corriente CONTACTO fila se añade a la tabla de resultados.

  4. El siguiente CONTACTO registro se procesa de la misma manera, y así sucesivamente, hasta que toda la tabla de contacto ha sido procesado.

  5. Debido a que está previsto por la consulta * SELECT CONTACTAR, todos los campos de la tabla de contactos son devueltos, incluyendo el nombre del contacto y número de teléfono.

NO EXISTE

El vendedor Zetec quiere saber los nombres y los números de las personas de contacto de todos los clientes en California. Imagine que un segundo vendedor es responsable de todos los Estados Unidos, excepto California. Ella puede recuperar sus personas de contacto mediante el uso de NO EXISTE en una consulta similar a la anterior:

Video: Tutoriales SQL Server #23 | count

SELECT * FROM CONTACTWHERE NO EXISTE (SELECT * FROM CUSTOMERWHERE CustState = `CA`AND CONTACT.CustID = CUSTOMER.CustID) -

Cada fila de contacto a la que la subconsulta no devuelve una fila se agrega a la tabla de resultados.

Artículos Relacionados