La funzione EXISTS?

di il
1 risposte

La funzione EXISTS?

Salvo, ho provato a leggere qualche definizione sulla funzione EXISTS e NOT EXISTS ma non mi è sufficientemente chiaro il concetto. Se ho capito bene la funzione EXISTS(subquery) mi restituisce tutto ciò che non viene eliminato dalla tabella (per esempio una NATURAL JOIN elimina le parti incongruenti), quinti mi restituisce ciò che cerco mentre una NOT EXISTS mi restituisce ciò che non cerco(nell'esempio della NATURAL JOIN avrei le incongruenze)?

NOT EXISTS((subquery) EXCEPT(subquey)) mi restituirebbe le parti "eliminate" dalla tabella?

1 Risposte

  • Re: La funzione EXISTS?

    Posto che la sottoquery di exists deve avere un riferimento alla query principale se no non ha senso.
    SQL prende una riga della query principale e verifica se la query exists sia TRUE (esiste, e' valida) , o not exists (non e' valida)

    select * from autisti
    where exists (select 1 from viaggi
    where viaggi.autista = autisti.autista
    and viaggi.data_viaggio = trunc(sysdate)
    )
    /
    Ritornano le righe di autisti che hanno una referenza di viaggio oggi
    Si potrebbe scrivere anche cosi'
    select * from autisti
    where autisti.autista in (select viaggi.autista from viaggi
    where viaggi.data_viaggio = trunc(sysdate)
    )
    /
    la preferenza di scrittura dipende dall'utilizzo degli indici
Devi accedere o registrarti per scrivere nel forum
1 risposte