Mysql-Requête/suppression groupement selon critère

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mysql-Requête/suppression groupement selon critère

Re: Mysql-Requête/suppression groupement selon critère

par maestro1303 » 05 juin 2014, 10:49

Bonjour,
ça y est grace à vos précédents posts je tiens la solution ou presque
Quand j'émets cette commande
select dixi,id,`col1`, `col2`, `col3`,count(
*) from ma_table group by concat( dixi,`col1`, `col2`, `col3` )

ça me donne:

Code : Tout sélectionner

130 1306 0,0052 0,0035 0,0076 1 130 1301 0,0102 0,005 0,007 8 132 1320 0,0102 0,005 0,007 4 132 1322 99 0,005 0,007 3 134 1343 0,0052 0,0035 0,0076 1 134 1347 0,0102 0,005 0,007 1 134 1340 0,014668 0,0271 0,016 1 134 1345 0,046865 0,1277 0,106 1 134522 1345229 0,11068 99 0,115 1 134524 1345249 0,11068 99 0,115 1 13453 134532 99 99 0,109 1 134555 1345550 0,11068 99 0,109 1 134562 1345623 0,11068 99 0,109 1 134562 1345625 99 99 0,115 2 134564 1345640 0,11068 99 0,109 2 134564 1345645 99 99 0,115 3 134594 1345948 99 99 0,115 1 134599 1345990 99 99 0,115 1 136 1365 0,0052 99 0,0076 1 136 1360 0,0102 0,005 0,007 2 136 1364 99 0,005 0,007 1 140 1403 0,0052 0,0035 0,0076 1 140 1401 0,0102 0,005 0,007 8 141 1416 0,0052 0,0035 0,0076 2 141 1410 0,0102 0,005 0,007 7
Mais je voudrais que les 2 dernières lignes correspondant à 141 la dernière ligne soit conservée qui correspond au max de 7 . Par contre je voudrais pas regrouper les lignes correspondant au nombre 2(avant dernière).

De même
pour les 2 lignes

Code : Tout sélectionner

132 1320 0,0102 0,005 0,007 4 132 1322 99 0,005 0,007 3
je voudrais conserver le regroupement correspondant à 4 mais non celui correspondant à 3 c'est à dire avoir les trois lignes

en détail et pas les regrouper.

Merci infiniment.

Re: Mysql-Requête/suppression groupement selon critère

par moogli » 04 juin 2014, 15:56

oui pourquoi pas tu auras les n upplet correspondants, par contre il te faut ensuite récupérer la colonne qui te sert de pivot (la seconde dans ton exemple) pour trouver les valeurs a garder.


@+

Re: Mysql-Requête/suppression groupement selon critère

par Elie » 04 juin 2014, 14:23

SELECT DISTINCT CONCAT(`col1`, `col2`, `col3`), * FROM ta_table
Ca pourrait être une solution ca ?

Re: Mysql-Requête/suppression groupement selon critère

par moogli » 04 juin 2014, 14:17

salut,

ce n'est pas très clair ton truc mais a priori tu va devoir grouper sur les trois dernière colonne et ensuite traiter les données pour connaitre le plus grand dénominateur commun, mettre tous cela dans une table temporaire, vider ensuite la table d'origine et insérer les données de la table temporaire dans la table d'origine.

en plus clair

- select des données groupées sur les 3dernières colonnes
- pour chaque ligne correspondant récupérer les deux premières et faire le calcul.
- garder (par exemple dans un tableau les données ($tableau['valeur des trois colonnes'][]).
- pour chaque donnée dédoublonnée il connaitre les plus grande dénominateur commun, donc comparer chaque élément avec les autres et lorsqu'il sont trouvé tu peux faire tes insertions.


@+

Mysql-Requête/suppression groupement selon critère

par maestro1303 » 04 juin 2014, 09:38

Bonjour à tous,
J'ai une table qui contient 4 champs
-série qui est une auto-incrémentation ( LA CLÉ )
-dest qui contient un préfixe téléphonique : ce champ est stocké comme varchar ( 40 ) sa longueur peut être une ou 40 chiffres
-col1 , col2 col3 sont des réels déclarés comme float
Nous avons dans l'exemple suivant

Code : Tout sélectionner

47 1246 0,123729 0,1495 0,0885 48 1248 0,0102 0.005 0.007 49 1249 0,0052 0,0035 0,0076 50 1250 0,0052 0,0035 0,0076 51 1251 0,0102 0.005 0.007 52 1252 0,0102 0.005 0.007 53 1253 0,0102 0.005 0.007 54 1254 0,0102 0.005 0.007 55 1256 0,0102 0.005 0.007 56 1260 0,0102 0.005 0.007 57 1262 0,0102 0.005 0.007 58 1264 0,053023 0,1638 0,06 59 1267 0,0102 0.005 0.007 60 1268 0,145631 0,0946 0,1045 61 1269 0,0102 0.005 0.007 62 1270 0,0102 0.005 0.007
L'objectif est d' agréger / résumer ce tableau en réduisant les lignes selon les 3 dernières colonnes et le prefixe bien sûr.

Pour rexample les lignes suivantes

Code : Tout sélectionner

50 1250 0,0052 0,0035 0,0076 51 1251 0,0102 0.005 0.007 52 1252 0,0102 0.005 0.007 53 1253 0,0102 0.005 0.007 54 1254 0,0102 0.005 0.007 55 1256 0,0102 0.005 0.007
sera réduit à 2 lignes

Code : Tout sélectionner

50 1250 0,0052 0,0035 0,0076 51 125 0,0102 0.005 0.007
parce que tous les préfixes commencent par 125 . Même 50 1250 0,0052 0,0035 0,0076 commence par '125 ' MAIS 0,0052 0,0035 0,0076 ne sont pas égaux ( un par un ) à 0,0052 0,0035 0 , 0076

merci beaucoup...