Grouper plusieurs champs en un champs ? [mySQL] - SQL/NoSQL - Programmation
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)
Marsh Posté le 23-03-2003 à 16:31:16
si joueur_XX est amené a être une unique valeur, utilise SET/ENUM
Marsh Posté le 23-03-2003 à 18:11:03
un truc dans le genre : 
SELECT concat(joueur1, joueur2 ... joueur16) 
FROM ta_table 
WHERE .....
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)
Marsh Posté le 24-03-2003 à 11:53:28
Par exemple (désolé, pas trouvé plus simple comme requête  )
) 
 
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.
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