Concater des champs suivant des intervalles

Petit nouveau ! | 3 Messages

14 janv. 2011, 16:47

Bonjour à toutes et tous !

J'ai besoin d'infos voire d'aide....
je voudrais faire une "moulinette" qui me permettrait de mettre au format voulu des donnees .
Mon cas:

Par Numero de magasin j'ai une ou plusieurs lignes d'enregistrements (N° Ligne) et les demandes (Titre demande)sont formatees, et suivies d'explications ( Texte demande).
Je peux avoir le meme "Titre demande" pour le meme magasin, mais les explications seront differentes.

| N° Mag | N° Ligne | Titre Demande | Texte Demande |
---------------------------------------------------------------------------
| MU15 | 1 .......... | Demande type1 | Sous titre |
| MU15 | 2 .......... | .................. | ligne 1 |
| MU15 | 3 .......... | .................. | ligne 2 |
| MU15 | 4 .......... | .................. | ligne 3 |
| MU15 | 5 .......... | Demande type1 | Sous titre |
| MU15 | 6 .......... | .................. | ligne 1 |
| MU15 | 7 ..........| .................. | ligne 2 |
| MU15 | 8 ..........| Demande type9 | Sous titre |
| MU15 | 9 .......... | .................. | ligne 1 |
| MU15 | 10 .......... | .................. | ligne 2 |
| MC02 | 1 .......... | Demande type5 | Sous titre |
| MC02 | 2 .......... | .................. | ligne 1 |
| MU18 | 1 .......... | Demande type21| Sous titre |
| MU18 | 2 .......... | .................. | ligne 1 |



Et moi je voudrai eviter les doublons en bdd, et optimiser pour un affichage simple par la suite et pouvoir faire des tris de mon tableau de synthese.
Cela pourrait donner:



| N° Mag | N° Ligne | Titre Demande | Texte Demande |
----------------------------------------------------------------------------------------------
| MU15 | .......... | Demande type1 | Sous titre // ligne 1 //ligne 2 //ligne 3 |
| MU15 | .......... | Demande type1 | Sous titre // ligne 1 //ligne 2 |
| MU15 | .......... | Demande type9 | Sous titre // ligne 1 //ligne 2 |
| MC02 | .......... | Demande type5 | Sous titre // ligne 1 |
| MU18 | .......... | Demande type21| Sous titre // ligne 1 |


il faut que je concatene apres les avoir recupere, les "Texte demande" groupes par Titre demande, et que l'incrementation des N° de lignes peut m'aider, mais comment initialiser les intervalles pour requeter sur les bons champs, je pense à : "SELECT * FROM maTable WHERE N°Ligne BETWEEN 1 AND 5 OR N°Ligne BETWEEN 5 AND 8 OR N°Ligne BETWEEN 8 AND 10" avec un tableau php du type
$intervalles=array(array(1,5), array(5,8), array(8,10)) ?

Est ce que mon raisonnement est bon ? j'ai l'impression de me compliquer !
Merci !

ViPHP
xTG
ViPHP | 7331 Messages

14 janv. 2011, 16:56

Qu'est ce qui peut être constant dans ton système ? Le numéro de magasin l'est, le numéro de ligne aussi, le titre l'est-il ou bien est-il rentré manuellement (problème de synonymes ect) ?

Car si ces trois informations sont statiques tu obtiens trois identifiants empêchant des doublons de ligne.
(Et bien sûr pour plus de propreté une table référençant les titre (id, texte)).

Petit nouveau ! | 3 Messages

14 janv. 2011, 17:07

En fait je veux concatener mes lignes de commentaires appartenant à un meme Type de demande mais hormis les numeros de lignes incrementés et le numero de magasin j'ai rien qui permet d'identifier quelles explications vont pour telles ou telles demandes !
Je crois que les tableaux sont plus clairs que mes explications .... :oops:

ViPHP
xTG
ViPHP | 7331 Messages

14 janv. 2011, 17:09

Hum je vois.
Il doit y avoir un moyen de faire cela avec un GROUP BY et la fonction CONCAT mais j'avoue qu'à par lancer la piste je n'ai pas le temps d'approfondir (il me faudrait autant de recherche et de tests que toi :D ).

Petit nouveau ! | 3 Messages

14 janv. 2011, 17:26

Hum je vois.
Il doit y avoir un moyen de faire cela avec un GROUP BY et la fonction CONCAT mais j'avoue qu'à par lancer la piste je n'ai pas le temps d'approfondir (il me faudrait autant de recherche et de tests que toi :D ).
C'est ce qui a ete propose à mon co-stagiaire pour la meme problematique mais le volume de donnees est trop gros ( a priori, ou alors on y arrive pas... #-o ) pour passer par les vues et Group_concat et autre.
Je cherche à le faire en php pour ma part. :wink:

ViPHP
ViPHP | 5462 Messages

14 janv. 2011, 17:51

Hum je vois.
Il doit y avoir un moyen de faire cela avec un GROUP BY et la fonction CONCAT mais j'avoue qu'à par lancer la piste je n'ai pas le temps d'approfondir (il me faudrait autant de recherche et de tests que toi :D ).
C'est ce qui a ete propose à mon co-stagiaire pour la meme problematique mais le volume de donnees est trop gros ( a priori, ou alors on y arrive pas... #-o ) pour passer par les vues et Group_concat et autre.
Je cherche à le faire en php pour ma part. :wink:
non il a raison en MySQL ca sera mieux, le volume de donnée est au contraire réduit