Je génère des images à partir d'un original et les stocke dans un tableau. Je veux une requête qui va vérifier les lacunes.Rechercher des enregistrements "manquants" dans un tableau de pont/de données croisées
Les tailles d'image sont conservées dans une troisième table et chaque original doit avoir une image générée pour chaque enregistrement de la table de types.
Où est ce que j'ai jusqu'à présent:
SELECT oi.OriginalImageID, it.ImageTypeID
FROM dbo.OriginalImages AS oi
CROSS JOIN
dbo.ImageType AS it
LEFT OUTER JOIN
(
SELECT oi2.OriginalImageID, it2.ImageTypeID
FROM dbo.OriginalImages AS oi2
INNER JOIN
dbo.GeneratedImages AS gi2 ON gi2.OriginalImageID = oi2.OriginalImageID
INNER JOIN
dbo.ImageType AS it2 ON it2.ImageTypeID = gi2.ImageTypeID
) AS sub ON sub.OriginalImageID = oi.OriginalImageID
AND sub.ImageTypeID = it.ImageTypeID
WHERE (sub.OriginalImageID IS NULL)
Ce qui fonctionne, mais il semble très laid. Je me demande s'il y a une façon plus élégante de le faire.
Les tableaux ressemblent essentiellement à ceci:
OriginalImages
OriginalImageID (PK)
Image
GeneratedImages
OriginalImageID (FK)
ImageTypeID (FK)
Image
ImageType
ImageTypeID (PK)
Description
hum, non. J'obtiens les enregistrements dont j'ai besoin de la requête originale. mais n'obtenant aucun résultat de l'un ou l'autre. Actuellement, il y a 4 "types" donc SELECT NULL FROM dbo.GeneratedImages AS gi2 WHERE gi2.OriginalImageID = oi.OriginalImageID ne renverra pas de null s'il y a même un type dans la table GeneratedImages. –
@Dan - Oups, j'ai raté une partie importante de la jointure - essayez les requêtes mises à jour. –
Chaud! Merci pour l'aide, souhaite que je pourrais upvote deux fois! –