## ce programme s'utilise via : ## mysql -v -v -v --user=XXX --password=YYY statdata < 4tables_mysql.txt > 4tables_sol.txt # 1. Client et article de la commande numéro 4 SELECT cli.nom, art.nom FROM cli,art,cmd WHERE cmd.nc=4 AND cmd.ncl=cli.nc AND art.na=cmd.nar ; # 2. Détail des commandes en clair SELECT " Commande " , cmd.nc , " Client " , cli.nom , " Article " , art.nom , " Fournisseur " , four.nom FROM cmd,cli,art,four WHERE cmd.ncl=cli.nc AND cmd.nar=art.na AND art.four=four.nf ORDER BY cmd.nc ; # 3. Clients ayant commandé au moins une fois # triés par nombre de commandes décroissantes # puis par nom de client si meme nombre de commandes SELECT cli.nom, COUNT(cli.nom) AS ndc FROM cli,cmd WHERE cmd.ncl=cli.nc GROUP BY cli.nom ORDER BY ndc DESC , cli.nom ; # 4. Cients n'ayant jamais commandé # triés par nom de client SELECT DISTINCT cli.nom FROM cli LEFT JOIN cmd ON cli.nc=cmd.ncl WHERE cmd.ncl IS NULL ORDER BY cli.nom ; ; # 5. Articles avec nombre de commandes par article # triés par nombre décroissant d'articles commandés # (on met 0 si un article n'a pas été commandé) SELECT art.nom AS nom_article, IF(ISNULL(SUM(cmd.qte)),0,SUM(cmd.qte)) AS nbcmd FROM art LEFT JOIN cmd ON cmd.nar=art.na GROUP BY art.nom ORDER BY nbcmd DESC , art.nom ; # 6. Nombre de commandes passées pour chaque fournisseur # Résultats triés par nombre décroissant de commandes. # Attention : un fournisseur n'a aucune commande SELECT four.nom, COUNT(art.four) AS nbcmd FROM four LEFT JOIN cmd,art ON four.nf=art.four WHERE cmd.nar=art.na OR art.four IS NULL GROUP BY art.four ORDER BY nbcmd DESC ; ;