L3 Info : SGBD
 
◃  Ch. 9 SQL : DQL (Algèbre relationnel et SQL)  ▹
 

Les sous-requêtes (2/3)

  • Sous-requêtes retournant plusieurs valeurs :
  • Utilisation des opérateurs IN et NOT
    WHERE col IN (SELECT ...)
    WHERE col NOT IN (SELECT ...)
    
  • Utilisation des opérateurs de comparaison combinés avec ANY ou ALL
    WHERE col [=|<>|<|<=|>|>=] ANY (SELECT ...)
    WHERE col [=|<>|<|<=|>|>=] ALL (SELECT ...)
    
  • Exemples :
    SELECT * FROM Etudiant E
       WHERE E.dip_id IN (SELECT D.dip_id FROM Diplome D
                            WHERE LOWER(D.dip_discipline) LIKE '%info%');
     etud_num | etud_nom | etud_prenom |       etud_adresse        | etud_naissance | dip_id 
    ----------+----------+-------------+---------------------------+----------------+--------
     20000001 | Martin   | Jacques     | Résidence de la pommeraie | 1995-01-01     |      1
     20000002 | Martin   | Pierre      | Résidence de la pommeraie | 1995-10-21     |      1
    (2 rows)
    
    SELECT * FROM Etudiant
      WHERE etud_naissance <= ALL (SELECT etud_naissance FROM Etudiant);
     etud_num | etud_nom | etud_prenom |    etud_adresse     | etud_naissance | dip_id 
    ----------+----------+-------------+---------------------+----------------+--------
     20000003 | Dalton   | Joe         | Pénitencier fédéral | 1865-04-01     |       
    (1 row)