Adloun

Une condition composée

Exercice d'entraînement · niveau 2 · mathématiques appliquées (ECG 2e année), chapitre 13 — Bases de données et travaux pratiques · Interroger une table

Énoncé

La table commande a pour champs id, client_id et montant. Écrire la requête donnant l'identifiant et le montant des commandes dont le montant est différent de et qui ont été passées par le client ou par le client .

Corrigé

La requête.


SELECT id, montant FROM commande
WHERE montant <> 0 AND (client_id = 1 OR client_id = 3);

Le test de différence. Il s'écrit &lt;&gt; en SQL, et non != comme en Python. C'est la notation que retient le programme, aux côtés de =, &lt;, &lt;=, &gt; et &gt;=.

Les parenthèses sont indispensables. En SQL comme en logique, AND est prioritaire sur OR. Sans parenthèses, la condition


WHERE montant <> 0 AND client_id = 1 OR client_id = 3

se lirait (montant &lt;&gt; 0 AND client_id = 1) OR client_id = 3, et rendrait toutes les commandes du client , y compris celles de montant nul. Ce n'est pas ce qui est demandé.

Ce qui est filtré, ce qui est affiché. La clause WHERE choisit les lignes ; la liste qui suit SELECT choisit les colonnes. Les deux sont indépendantes : ici l'on filtre sur client_id sans l'afficher, ce qui est parfaitement licite.

Deux détails d'écriture. Les valeurs et sont des entiers, donc sans apostrophes — celles-ci sont réservées aux chaînes de caractères. Et la requête se termine par un point-virgule.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.