J'ai deux tables. VÉHICULES et PROPRIÉTÉ. J'essaie de faire une requête qui me donnera une liste de tous les véhicules PAS dans la table PROPRIÉTÉ. J'ai besoin fondamentalement d'un rapport de mon inventaire de VÉHICULE disponible. J'ai essayé cette requête:Multi Table NON EQUAL dans la requête d'accès
SELECT VEHICLE.*
FROM VEHICLE, OWNERSHIP
WHERE (VEHICLE.VEH_ID <> OWNERSHIP.VEH_ID);
Im obtenir:
Quand je fais autant que je reçois tous les véhicules qui sont répertoriés dans la propriété afin que les œuvres. Mais le NON égal ne fait pas. Des idées?
Cela a fonctionné. Merci beaucoup. – Batman
Im essayant d'apprendre ceci alors laissez-moi savoir si je l'explique mal s'il vous plaît. La sous-requête est de trouver quels véhicules sont à la fois dans le véhicule et la propriété. Attendu que la requête externe sélectionne tous les véhicules qui n'ont pas été identifiés comme appartenant à la fois au VÉHICULE et à la PROPRIÉTÉ. Est-ce correct? Serait-ce considéré comme une sous-requête corrélée? – Batman
@Batman: Oui, c'est exact - une telle sous-requête peut être considérée comme corrélée. Cependant, cela ne signifie pas toujours de mauvaises performances, l'optimiseur est assez intelligent pour ne pas l'exécuter pour chaque ligne ... Je ne suis pas sûr à 100% que MS = Access supporte 'left join', mais la requête ci-dessus est la même comme 'SELECT v. * FROM véhicule v Propriété de LEFT JOIN o ON (o.veh_id = v.veh_id) WHERE o.veh_id IS NULL' et devrait générer le même plan d'exécution. – a1ex07