Grouper en prenant la plus grande valeur [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 13-11-2015 à 15:41:11
Bon, j'y arrive comme ceci, mais c'est lent et un peu moche.
Si quelqu'un a mieux, je suis preneur.
Code :
|
Marsh Posté le 17-12-2015 à 09:14:09
Honnêtement, je reverrais la structure de mes tables, si j'étais toi.
Parce que lorsqu'on doit commencer, dans les requêtes, à faire du replace et du substring pour générer ce qu'on veut, ça doit généralement faire réagir.
Pour moi, la notion de "fixe" "mobile" d'un côté, et le niveau de paliers devraient être sortis de ton champ destination, et mises dans deux autres tables.
Les problèmes de lenteur seront probablement aussi améliorés avec ce genre de structure.
Marsh Posté le 17-12-2015 à 09:16:44
J'avais oublié ce topic et au final, cela a été revu
Mais je ne peux pas changer la table destinations, car c'est un pré-requis (ce sont les grilles de facturation fournisseurs en l'état, chargée depuis les csv fournis).
Donc je fais au mieux
Marsh Posté le 17-12-2015 à 10:07:37
+1 pour mettre "fixe"/"mobile" dans un champ et les paliers dans un autre.
Des énums par ex.
Marsh Posté le 17-12-2015 à 10:14:04
Ceci dit, je pourrais garder la structure actuelle, tout en rajoutant une colonne pour le type, que je renseignerais au remplissage de la table.
Marsh Posté le 17-12-2015 à 10:22:05
Non, dans destinations, il faut 2 champs en plus. Ca change donc la structure.
Marsh Posté le 17-12-2015 à 10:23:48
Oui, cela la change, mais du moment que c'est juste des colonnes en plus, ça n'est pas très grave
Marsh Posté le 13-11-2015 à 14:42:05
Hello,
Sous MySQL 5.5, j'ai des grilles de consommations voip associées à des destinations.
Une même destination peut avoir plusieurs paliers (genre "AFRIQUE DU SUD Fixe (palier 1)", "AFRIQUE DU SUD Fixe (palier 2)" ....
L'idée est d'afficher la grille complète avec les tarifs vers chaque type de destination en prenant le prix du palier le plus élevé pour un client donné (1 dans l'exemple).
Donc d'afficher "AFRIQUE DU SUD Fixe" ou "AFRIQUE DU SUD Mobile" avec le tarif du palier le plus élevé, sans afficher les différents paliers, de façon à connaître le tarif le plus élevé possible vers une destination (en fixe et mobile).
Il faut afficher toute la grille, donc tous les tarifs dans customers_prices, avec le nom de la destination.
Pour n'avoir que le nom de la destination sans le palier, c'est la partie facile :
replace( d.destination_name, concat( ' (p', substring_index( d.destination_name, ' (p' , -1 ) ) , '' )
Une idée ?
Merci.
Par contre, toutes les destinations n'ont pas forcément de palier, donc là il faut retourner le seul résultat possible.
Message édité par Shadow aok le 13-11-2015 à 15:33:20