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

Les sous-requête dans SELECT/HAVING

  • La clause SELECT permet l'utilisation de sous-requêtes ne retournant qu'une seule valeur
  • Le résultat de la sous-requêtes est constant pour toutes les lignes du résultat de la requête principale
  • Exemples :
    SELECT COUNT(*) nbProfs, (SELECT COUNT(*) FROM etudiant) nbEtuds FROM professeur;
    +-------+-------+
    |nbprofs|nbetuds|
    +-------+-------+
    |6      |6      |
    +-------+-------+
    SELECT (SELECT COUNT(*) FROM etudiant)/COUNT(*) nbEtudsParProfs FROM professeur;
    +---------------+
    |nbetudsparprofs|
    +---------------+
    |1              |
    +---------------+
    SELECT *, (SELECT COUNT(*) FROM professeur) nbProfs FROM diplome;
    +------+-------+----------+--------------+-------+-----+
    |dip_id|dip_nom|dip_niveau|dip_discipline|prof_id|nbProfs|
    +------+-------+----------+--------------+-------+-------+
    |1     |Licence|L3        |Informatique  |3      |6      |
    |2     |Master |M2        |Informatique  |3      |6      |
    +------+-------+----------+--------------+-------+-------+
  • La clause HAVING permet également l'insertion de sous-requête (même principe que la clause WHERE)