Pour toutes les opérations ensemblistes, les colonnes des requêtes doivent être uni-compatibles (même position => même type).
UNION
Somme des occurrences des requêtes, doublons supprimés, équivalent d'un OR.
SELECT rs_client, ca_client FROM client WHERE id_client in
(select id_client FROM commande GROUP BY id_client HAVING COUNT(*) = 1)
UNION
SELECT rs_client, ca_client FROM client cl1 where ca_client < (SELECT AVG(ca_client) FROM client cl2 WHERE cl2.id_categorie = cl1.id_categorie) ORDER BY 2
2 => n° colonne
Clients ayant un CA < au chiffre d'affaires moyen de leur catégorie OU n'ayant effectué qu'une seule commande.
INTERSECT
Occurrences communes à deux tables, équivalent d'un AND.
SELECT rs_client, ca_client FROM client WHERE id_client in
(select id_client FROM commande GROUP BY id_client HAVING COUNT(*) = 1)
INTERSECT
SELECT rs_client, ca_client FROM client cl1 where ca_client < (SELECT AVG(ca_client) FROM client cl2 WHERE cl2.id_categorie = cl1.id_categorie) ORDER BY 2
Clients ayant un CA < au chiffre d'affaires moyen de leur catégorie ET n'ayant effectué qu'une seule commande.
MINUS
Occurrences appartenant à une table, mais pas à l'autre.
SELECT rs_client, ca_client FROM client WHERE id_client in
(select id_client FROM commande GROUP BY id_client HAVING COUNT(*) = 1)
MINUS
SELECT rs_client, ca_client FROM client cl1 WHERE ca_client < (SELECT AVG(ca_client) FROM client cl2 WHERE cl2.id_categorie = cl1.id_categorie) ORDER BY 2
Clients ayant un CA < au chiffre d'affaires moyen de leur catégorie SAUF ceux n'ayant effectué qu'une seule commande.
ANY
Comparer une valeur à n'importe quelle valeur ramenée par une sous-requête.
SELECT rs_client, ca_client FROM client WHERE ca_client > ANY (SELECT ca_client FROM client WHERE id_categorie = 1)
Clients ayant un chiffre d'affaires supérieur à celui de n'importe quel client de la catégorie 1.
ALL
Comparer une valeur à toutes les valeurs ramenées par une sous-requête.
SELECT rs_client, ca_client FROM client WHERE ca_client > ALL (SELECT ca_client FROM client WHERE id_categorie = 1)
Clients ayant un chiffre d'affaires supérieur à celui de TOUS les clients de la catégorie 1.
EXISTS
Vérifier l'existence d'une occurrence : retourne True ou False.
SELECT rs_client FROM client cl1 WHERE NOT EXISTS (SELECT * FROM commande WHERE id_client = cl1.id_client)
Clients qui n'ont jamais passé de commande.
DIVISION
Répondre à la question TOUS, la division n'existe pas, il faut utiliser NOT EXISTS et de sous-requêtes corrélées.
SELECT rsfour FROM fournisseur f1 WHERE NOT EXISTS (SELECT id_article FROM article a1 WHERE NOT EXISTS (SELECT * FROM article a2 WHERE a2.id_article = a1.id_article and a2.id_fournisseur = f1.id_fournisseur))
Lister les fournisseurs qui fournissent TOUS les articles.
aucune ligne sélectionnée.