Je veux vérifier si une entrée existe dans une table en fonction d'une valeur d'une 2e table, mais si elle n'existe pas, sélectionnez la valeur de la 2e table. P>
Pour expliquer, j'ai une table appelée Alors ce que je veux périphériques code> et une table appelée tests code>. Chaque appareil dans périphérique code> a un identifiant unique (un entier). Chaque test dans tests code> fait référence à l'identifiant unique du périphérique utilisé sur le test. Par conséquent, chaque test code> est associé à un périphérique code>. Cependant, tous les code> ont été testés. De plus, plusieurs tests auraient pu être exécutés sur un seul appareil. P>
SELECT code> est toutes les entrées dans les périphériques code> code> qui ne sont pas référencées par au moins une entrée dans tests p >
3 Réponses :
Vous pouvez utiliser un simple non dans code> pour obtenir le résultat souhaité (en supposant que ID code> comme identificateur unique dans les périphériques code> code>, périphérique_id code> comme clé étrangère sur périphérique.id code> dans tests code> et tests.device_id code> a un non null code > Attribut: SELECT *
FROM devices
WHERE id NOT IN (
SELECT DISTINCT device_id
FROM tests
);
Dans / non in / n'existe pas les sous-requêtes sont déjà implicitement distinctes (à Oracle au moins).
@Williamrobertson merci. Cette réponse a été faite avant que le titre / la balise Oracle ait été ajoutée. Je laisserai la réponse comme pour le moment,
Alors ce que je veux sélectionner, toutes les entrées des périphériques ne sont pas référencées par au moins une entrée dans les tests. P>
En supposant que les structures de données suivantes: p>
xxx pré> vous pouvez utiliser
n'existe pas code>: p>xxx pré> < p> ou une jointe à gauche antidiaptaire: p> xxx pré> blockQquote>
Merci, ça a fonctionné. Je vais admettre que j'ai changé les noms de mes tables ci-dessus pour faciliter la question de poser la question, mais voici ce que j'ai conclu avec et cela fonctionne correctement: simple à la fin. Je ne peux pas dire que je suis un débutant à SQL, pouvez-vous? :) p> p>
Je m'y allouerais contre l'utilisation de pas dans code>, car cela peut conduire à des comportements inattendus lorsqu'il s'agit de null code> s.