je les tableaux suivants:Essayer de résoudre requête SQL avec deux tables
Entrée
EntryID - int
EntryDate - datetime
Heure
EntryID - int
inhour - datetime
OutHour - datetime
Pour chaque registre dans la table d'entrée, il devrait y avoir au moins un (peut-être beaucoup) les registres sur la table heure, comme ceci:
Entrée
EntryID: 8
EntryDate: 9/9/2010 12:31:25
Heure
EntryID: 8
inhour: 9/9/2010 12:31:25
OutHour: 9/9/2010 18:21:19
Maintenant, cette information est stockée sur 2 bases de données égales, une sur la machine locale et une sur un serveur. J'essaye d'écrire une requête qui effacera toutes les informations qui ont déjà été passées au serveur sous la condition que les registres qui n'ont pas OutHour (null) ne seront pas supprimés.
j'ai écrit la requête suivante:
DELETE from [dbo].[Entry]
WHERE [dbo].[Entry].[EntryID] IN (SELECT [EntryID]
FROM [LINKEDSERVER].[MYDATABASE].[dbo].[Entry])
AND [dbo].[Entry].[EntryID] IN (SELECT [EntryID]
FROM [dbo].[Hour]
WHERE [OutHour] IS NOT NULL)
DELETE from [dbo].[Hour]
WHERE [dbo].[Hour].[InHour] IN (SELECT [InHour]
FROM [LINKEDSERVER].[MYDATABASE].[dbo].[Hour])
AND [dbo].[Hour].[OutHour] IS NOT NULL
AFAIK, cette requête vérifie d'abord dans la table d'entrée et supprimera tous les registres qui sont déjà sur le serveur et ne disposent pas d'un registre d'heure correspondant qui a une valeur nulle OutHour. Cependant aujourd'hui j'ai découvert qu'un enregistrement d'entrée a été supprimé mais l'heure correspondante n'était pas (il avait une OutHour nulle).
Qu'est-ce que je fais mal? Toute aide est appréciée.
Merci!