Como usar consultas sql aninhados que são um teste de existência

A consulta retorna dados de todas as linhas da tabela SQL que satisfaçam as condições da consulta. Às vezes, muitas linhas são returned- às vezes apenas uma volta. Às vezes, nenhuma das linhas na tabela satisfazer as condições, e há linhas são retornadas.

Video: VB.NET Database Tutorial - Query a Microsoft SQL Database To A DataGridView

Você pode usar o EXISTE e NÃO EXISTE predicados para introduzir uma subconsulta. Essa estrutura informa se quaisquer linhas na tabela localizada na subconsulta de A PARTIR DE cláusula de cumprir as condições em sua ONDE cláusula.

EXISTE e NÃO EXISTE subconsultas são exemplos de subconsultas correlacionadas.

UMA subconsulta correlacionada primeiro encontra a mesa e linha especificada pela instrução delimitador e, em seguida, executa a subconsulta na linha na tabela de subconsulta que se correlaciona com a linha atual da tabela da instrução de inclusão.

A subconsulta quer retorna uma ou mais linhas ou ele retorna nenhum. Se ela retorna pelo menos uma linha, a EXISTE predicado for bem sucedida, ea declaração encerrando realiza sua ação. Nas mesmas condições, o NÃO EXISTE predicado falha, ea declaração delimitador não executa sua ação.

Depois de uma linha da tabela de declaração delimitador é processado, a mesma operação é realizada na próxima linha. Esta ação é repetida até que cada linha na tabela de declaração de inclusão foi processado.

EXISTE

Suponha que você é um vendedor de Zetec Corporation e você quer chamar o seu povo de contato primário para todas as organizações de clientes da Zetec na Califórnia. Tente a seguinte consulta:

Video: 14 - Teste INDEX (PostgreSQL).avi

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

Observe a referência a CONTACT.CustID, que faz referência a uma coluna de consulta externa e comparando-a com uma outra coluna, CUSTOMER.CustID, a partir da consulta interna. Para cada linha candidata da consulta externa, você avaliar a consulta interna, usando o CustID valor dos atuais CONTATO linha da consulta externa no ONDE cláusula da consulta interna.



Eis o que acontece:

  1. o CustID coluna liga tabela de contato para a tabela CUSTOMER.

  2. SQL olha para o primeiro registro na tabela CONTACT, encontra a linha na tabela do cliente que tem o mesmo CustID, e verifica essa linha de CustState campo.

  3. E se CUSTOMER.CustState = ‘CA’, o atual CONTATO linha é adicionada à tabela de resultados.

  4. Nas próximas CONTATO registro é então processada da mesma forma, e assim por diante, até que a tabela de contatos inteira foi processada.

  5. Porque os especifica de consulta SELECT * do contato, todos os campos da tabela do contato são retornados, incluindo o nome do contato e número de telefone.

NÃO EXISTE

O vendedor Zetec quer saber os nomes e números das pessoas de contato de todos os clientes na Califórnia. Imagine que um segundo vendedor é responsável por todos os Estados Unidos, exceto Califórnia. Ela pode recuperar o seu povo de contato usando NÃO EXISTE em uma consulta semelhante à anterior:

SELECT * DE CONTACTWHERE NÃO EXISTE (SELECT * FROM CUSTOMERWHERE CustState = `CA`AND CONTACT.CustID = CUSTOMER.CustID) -

Cada linha em contato para que a subconsulta não retorna uma linha é adicionada à tabela de resultados.


Publicações relacionadas