Ecco cosa sto cercando di realizzare: 1. Estrarre l'ID utente dalla tabella utenti (documents.ownerID è la chiave esterna di Users.Handle) 2. Per gli utenti che non hanno un record che è stato creato nella tabella documenti negli ultimi 90 giorniSQL "Dove non esiste" non restituisce alcuna riga
Ecco la query che ho finora (sto facendo funzionare questo tramite SQL Management Studio 2012):
Select Users.UserID
From Documents
Inner Join Users on documents.OwnerID = users.handle
Where Not Exists
(
Select *
From Documents
Where documents.creationtime >= Dateadd(day, -90, getutcdate())
)
Group by Users.UserID
Order by Users.UserID ASC
Nulla viene restituito nell'output. Tuttavia, quando rimuovo il "Not" dall'istruzione "Not Exists" ottengo un output di utenti che hanno un record creato nella tabella dei documenti negli ultimi 90 giorni. Inoltre, se cambio l'indicatore "> =" su "=", ricevo anche l'output. Penso che il problema sia che non ho una chiara comprensione dell'affermazione di EXIST. Apprezzo molto il tuo aiuto.
La mia comprensione di "Non esiste" è che la query restituirà tutto ciò che non è incluso nella sub-query, è corretto? Quindi, se l'utente non avesse avuto un record creato in 90 giorni, sarebbe stato restituito nella mia specifica query (dopo le modifiche decise da Gordon, o ovviamente), giusto? Grazie per l'aiuto. – user2124571
Sì, di solito vuoi collegare la subquery NOT EXISTS alla tua query principale. Quindi nella tua versione originale dicevi "fammi registrare se non ci sono file nei documenti degli ultimi 90 giorni". In Gordon's, sta dicendo "prendi tutti i record il cui utente non ha un documento correlato degli ultimi 90 giorni". Spero che questo abbia aiutato. – Aushin
E 'stato assolutamente d'aiuto, grazie !! – user2124571