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.
Code :
- CREATE TABLE IF NOT EXISTS `customers_prices` (
- `destination_id` mediumint(8) unsigned NOT NULL,
- `customer_id` tinyint(3) unsigned NOT NULL DEFAULT '1',
- `price` decimal(7,5) unsigned NOT NULL DEFAULT '0.00000',
- KEY `customer_id` (`customer_id`),
- KEY `destination_id` (`destination_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- Exemple de données :
- 5 1 0.01398
- 6 1 0.01442
- 7 1 0.01794
- 8 1 0.20500
- 9 1 0.03084
- CREATE TABLE IF NOT EXISTS `destinations` (
- `destination_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- `destination_name` varchar(255) NOT NULL,
- PRIMARY KEY (`destination_id`),
- UNIQUE KEY `destination` (`destination_name`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- Exemple de données :
- 5 AFRIQUE DU SUD Fixe (palier 1)
- 6 AFRIQUE DU SUD Fixe (palier 2)
- 7 AFRIQUE DU SUD Mobile (palier 1)
- 8 AFRIQUE DU SUD Mobile (palier 2)
- 9 AFRIQUE DU SUD Mobile (palier 3)
|
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