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.