Sql methode pour écrire une requete
1°) Quelles sont les tables dont j’ai besoin ? Etablir la liste des tables nécessaires à partir des informations à afficher, à calculer ou qui servent de conditions de restriction. FROM 2°) Si j’ai plus d’une table, écrire la condition de jointure WHERE Se poser la question du type de jointure (normale ou externe) 3°) Quel est le niveau de détail obtenu ? (surtout dans le cas où on a plus d’1 table) Dans le cas d’une jointure, trouver la table qui contient le plus de lignes. Cela permettra de savoir si on doit effectuer par la suite un regroupement. 4°) Garde-t-on toutes les lignes ? WHERE A ce niveau, on trouvera toujours une condition de restriction portant sur un (ou plusieurs) nom(s) de champ 5°) Désire-t-on obtenir en résultat final le même niveau de détail que celui défini au 3°) ? Si on désire regrouper : GROUP BY 6°) Pour chaque ligne (ou pour chaque groupe si on a un group by), que veut-on afficher ? SELECT 7°) Dans le cas d’un Group by, on vérifie que dans le select, on ne peut avoir que des champs présents dans le group by ou des fonctions de regroupement (SUM, MIN, MAX, AVG, COUNT). 8°) Dans le cas d’un Group by, garde-t-on tous les groupes ? HAVING A ce niveau, on trouvera toujours une opération sur une (ou plusieurs) fonctions de regroupement 9°) Quel est l’ordre d’affichage des lignes (ou des groupes) ? ORDER BY
Auteur : J.STEFFE
1
Exemple : soit les 2 tables suivantes : CLIENTS
Code_client C1 C2 C3 C4 C5 Societe Dupont Martin Marcel Durand Dubois Pays France Allemagne France France France
COMMANDES
No_cde 1 2 3 4 5 6 7 Code_client C1 C2 C1 C3 C4 C1 C3 Date_cde 01/01/2004 02/02/2004 03/02/2004 03/03/2004 09/03/2004 11/03/2004 16/04/2004
On désire obtenir le nombre de commandes passées pour chaque client français (on affichera la code du client, le nom de la société ainsi que le nombre de commandes passées). NB : on ne retiendra pas les clients qui ont passé moins d’1 commande