Bonjour tout le monde,
En voyant la colonne ShipName dans la table dbo.Orders de Northwind, pour établir le poids commandé par client il peut être tentant de s'y prendre comme ça :
Mais pas de bol, ALFKI est réparti sur deux lignes, car il y a Afreds et Alfred's.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT CustomerID, ShipName, Sum(Freight) AS [Sum Freight] FROM dbo.Orders GROUP BY CustomerID, ShipName
<TABLE>
<row>
<col>CustomerID</col><col>ShipName</col><col>Sum Freight</col>
</row>
<row>
<col>ALFKI</col><col>Alfreds Futterkiste</col><col>29,46</col>
</row><row>
<col>ALFKI</col><col>Alfred's Futterkiste</col><col>196,12</col>
</row>
</TABLE>
Mais euh ... En bas de la page de saisie du forum, il y a pourtant écrit que les balises BB sont activées ? Elles ne sont pas bonnes, mes balises ?
Elles ressemblent à ce que j'ai trouvé là :
https://easy-design.net/wiki/bbcode-faire-un-tableau
Et à propos pour passer de la sortie SSMS au tableau BB j'ai appliqué la méthode "marteau-burin". Existe-t-il plus efficace, qu'on n'ait pas besoin de programmer soi-même ?
Je serais tenté de dire que celui qui a créé la base NORTHWIND ne savait pas que le nom de client, ça se met dans la table client, et de rédiger plutôt la requête comme ça :
Et ça donne le même tonnage pour ALFKI, mais sur une seule ligne. Vu le succès de la démonstration précédente, je vais m'abstenir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT dbo.Orders.CustomerID, COUNT(dbo.Orders.CustomerID) AS NbCmd, SUM(Freight) AS [SUM FREIGHT], dbo.Customers.CompanyName FROM dbo.Orders JOIN dbo.Customers ON dbo.Orders.CustomerID = dbo.Customers.CustomerID GROUP BY dbo.Orders.CustomerID, dbo.Customers.CompanyName
En s'y prenant comme ça, il ne me semble pas qu'il y ait un inconvénient à mettre deux champs pour le groupage ?
***
Au fait il y a quelque chose qui m'intrigue avec cette requête.
J'ai demandé à SSMS de la sauvegarder comme "Commandes par client.sql".
Bon, dans un nouvel onglet j'ouvre ce fichier, ça m'affiche bien les commandes par client.
Ce qui m'intrigue, c'est que le fichier comporte neuf octets : un saut de ligne, un espace, et trois autres sauts de ligne. Et c'est tout.
Et si je mets un guillemet à la place de l'espace, on ne trouve plus les enregistrements.
C'est quoi, de la transmission de pensée ?
Partager