1
votes

Comment exclure des enregistrements de la table dans une requête?

J'ai une table nommée BDS.cursuri, qui contient les colonnes "id_cadru", "tip_curs" . Exemple d'enregistrements:

J'ai essayé ceci:

id_cadru    tip_curs   
   8         modul I
   5         modul II
   8         modul III
   6         modul III      

SELECT BDS.cursuri.ID_CADRU FROM BDS.cursuri,
    (SELECT * FROM BDS.cursuri where TIP_CURS = "modul I") AS cu_m1
    where BDS.cursuri.ID_CADRU NOT IN (cu_m1.ID_CADRU);

J'attends les sorties 5 et 6, c'est-à-dire les enregistrements qui n'ont pas tip_curs = 'module I ', car la personne avec id_cadru = 8 a déjà tip_curs =' modul I ', mais j'obtiens également la sortie 8. Comment puis-je résoudre ce problème ? Merci.


0 commentaires

5 Réponses :


0
votes

Nous pouvons essayer d'utiliser une clause EXISTS ici:

SELECT t1.id_cadru, t1.tip_curs
FROM BDS.cursuri t1
WHERE NOT EXISTS (SELECT 1 FROM BDS.cursuri t2
                  WHERE t1.id_cadru = t2.id_cadru AND t2.tip_curs = 'model I');


0 commentaires

0
votes

Vous devez utiliser le NOT IN dans la sous-requête pas dans la jointure

SELECT BDS.cursuri.ID_CADRU 
FROM BDS.cursuri 
    where BDS.cursuri.ID_CADRU NOT IN (
      SELECT id  FROM BDS.cursuri where TIP_CURS = "modul I"
    );

ou utiliser une clause not exist pour la même sous-requête


0 commentaires

0
votes

Essayez avec la requête ci-dessous

SELECT BDS.cursuri.ID_CADRU 
FROM BDS.cursuri 
    where BDS.cursuri.ID_CADRU != (
      SELECT ID_CADRU FROM BDS.cursuri where TIP_CURS = "modul I"
    );


0 commentaires

0
votes

Essayez ceci,

Il renverra le id_cadru 5,6,8 avec modul II , modul III .

sélectionnez id_cadru, tip_curs de BDS.cursuri où id_cadru dans (sélectionnez distinct (id_cadru) de BDS.cursuri où tip_curs dans ('modul II ',' module III ')


0 commentaires

0
votes

Vous pouvez y parvenir en utilisant la requête suivante

CHOISIR * DE BDS.cursuri WHERE id_cadru NOT IN (SELECT id_cadru FROM BDS.cursuri WHERE tip_curs = 'modul I') AND tip_curs NOT IN ('module I')


0 commentaires