[mySQL] Grouper plusieurs champs en un champs ?

Grouper plusieurs champs en un champs ? [mySQL] - SQL/NoSQL - Programmation

Marsh Posté le 23-03-2003 à 12:07:55    

Salut,
 
voici mon problème :
j'ai une table avec comme champs : "joueur_01, joueur_02, ..., joueur_16".
J'aimerai à l'aide d'une requête pouvoir réunir toutes les valeurs des champs "joueur_xx" en un seul champs "joueurs".
 
En gros, au lieu d'avoir 16 champs avec une seule valeur dans chaque, avoir 1 champs avec 16 entrées, de type : joueurs=[joueur_01,...,joueur_16]
 
Merci d'avance !


Message édité par f L Y le 23-03-2003 à 12:23:13
Reply

Marsh Posté le 23-03-2003 à 12:07:55   

Reply

Marsh Posté le 23-03-2003 à 15:03:55    

:/
 
chuis pas sûr d'avoir  bien saisi le problème mais à ta place, je changerais le taTable(joueur_1, joueur_2, ..., joueur_16) par taTable(no_joueur, joueur)


---------------
sympathisant UBCT
Reply

Marsh Posté le 23-03-2003 à 16:31:16    

si joueur_XX est amené a être une unique valeur, utilise SET/ENUM

Reply

Marsh Posté le 23-03-2003 à 18:11:03    

un truc dans le genre :
SELECT concat(joueur1, joueur2 ... joueur16)
FROM ta_table
WHERE .....

Reply

Marsh Posté le 24-03-2003 à 11:51:25    

T'as essayé les signes de concaténation standard ?
 
Sous Oracle par exemple :
 
joueur1 || joueur2 as joueurs
 
Sous MSSQL Server :
 
jour1 + joueur2 as joueurs
 
Sinon, il y a aussi le symbole & (ne pas confondre avec && qui est l'opérateur booléen AND)

Reply

Marsh Posté le 24-03-2003 à 11:53:28    

Par exemple (désolé, pas trouvé plus simple comme requête :D)
 
SELECT     cde.CDE_ID, col.COLIS_ID, pro.PRO_SAP, ligcol.NB_PROD, CAST(ligcde.LIGCDE_VAL AS float) / CAST(ligcde.LIGCDE_QTE AS float) / 100 AS Expr2,  
                      prolan.PRO_NOM AS Expr1, mar.MAR_LIB, cde.DATE_CDE, vague.VG_DATE, famlan2.FAM_LIB, famlan.FAM_LIB AS Sous_Fam, cde.CN,  
                      cde.CLI_NOM + ' ' + cde.CLI_PRENOM AS Expr3, cde.CLI_VILLE, cde.CLI_CP, soc.SOC_NOM, cde.LIV_NOM + ' ' + cde.LIV_PRENOM AS Expr4,  
                      cde.LIV_VILLE, cde.LIV_CP
FROM         TABPRO pro INNER JOIN
                      TABMARLAN mar ON pro.MAR_ID = mar.MAR_ID INNER JOIN
                      TABLIGCOL ligcol ON pro.SKU = ligcol.SKU INNER JOIN
                      TABCOLIS col ON ligcol.COLIS_ID = col.COLIS_ID INNER JOIN
                      TABVAGUE vague ON col.VG_ID = vague.VG_ID INNER JOIN
                      TABCDE cde ON col.CDE_ID = cde.CDE_ID INNER JOIN
                      TABPROLAN prolan ON pro.SKU = prolan.SKU INNER JOIN
                      TABFAM fam ON pro.FAM_ID = fam.FAM_ID INNER JOIN
                      TABFAMLAN famlan ON fam.FAM_ID = famlan.FAM_ID INNER JOIN
                      TABFAM fam2 ON fam.FAM_CODE = fam2.FAM_CODE INNER JOIN
                      TABFAMLAN famlan2 ON fam2.FAM_ID = famlan2.FAM_ID INNER JOIN
                      TABLIGCDE ligcde ON cde.CDE_ID = ligcde.CDE_ID INNER JOIN
                      TABCLI cli ON cde.CN = cli.CN INNER JOIN
                      TABSOC soc ON cli.SOC_ID = soc.SOC_ID
WHERE     (mar.LAN_ID = 'F' ) AND (cde.DATE_CDE BETWEEN '01/01/2002' AND '12/31/2003' ) AND (prolan.LAN_ID = 'F' ) AND (famlan.LAN_ID = 'F' ) AND  
                      (famlan2.LAN_ID = 'F' ) AND (fam2.FAM_SCODE = '' )
 
Ca marche très bien sous SQL Server. A mon avis ça doit passer aussi bien sous MySQL.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed