[RESOLU] regrouper deux colonnes en une

Eléphant du PHP | 150 Messages

17 juil. 2019, 10:54

bonjour,
je cherche a regrouper 2 colonnes en 1

ex:

repere1 | repere2
--------------------------
1 | 1
2 | 3
3 | 4
5 | 5

etc...

et je souhaiterais récupérer :

1
2
3
4
5
etc..

merci d'avance pour votre aide

Mammouth du PHP | 571 Messages

17 juil. 2019, 12:08

bonjour,
Une union est tout a fait possible pour regrouper les colonnes.

Code : Tout sélectionner

SELECT repere1 FROM la_table UNION SELECT repere2 FROM la_table

Eléphant du PHP | 150 Messages

17 juil. 2019, 13:38

AVEC CETTE SOLUTION J'AI CE RÉSULTAT
1
2
3
7
5
6
4
11
8
9
10
06
15
12
13
14
19
17
16
18
20
21
22
25
24
021
23
28
MAIS PAS DANS L'ORDRE

Mammouth du PHP | 571 Messages

17 juil. 2019, 14:15

tu peux trier avec order by

Code : Tout sélectionner

(SELECT repere1 AS repere FROM la_table) UNION (SELECT repere2 AS repere FROM la_table) ORDER BY repere

Eléphant du PHP | 150 Messages

17 juil. 2019, 15:57

meme avec ceci :

1
10
11
12
13
14
15
16
17
18
19
2
20
21
22
23
24
25
26
27
28
29
3
30
31
32
36
37
38
39
4
5
6
7
8
9

voici mon code réel :
(SELECT  `semaine_A` AS semaine FROM calendrier WHERE  `semaine_A` !=0 )
UNION
 (SELECT  `semaine_B` AS semaine FROM calendrier WHERE  `semaine_B` !=0 )
ORDER BY semaine ASC

Mammouth du PHP | 2703 Messages

17 juil. 2019, 16:12


Mammouth du PHP | 571 Messages

17 juil. 2019, 16:50

est-ce-que semaine_A et semaine_B ne seraient pas par hasard des varchar ? si c'est la cas tu peux caster en int soit utilisant l’opérateur CAST soit en additionnant semaine par 0( order by semaine+0 ).

au passage les parenthèses ne sont pas obligatoires.
sur quelle version de mysql exécute-tu ta requête?

Un exemple similaire sur
https://www.w3schools.com/sql/sql_union.asp

Eléphant du PHP | 150 Messages

18 juil. 2019, 08:08

bonjour,

mes champs était bien en VARCHAR la solution + 0 marche parfaitement

la version ou je fait mes test est 3.5.2.2

merci beaucoup pour ton aide et tes explication très précise

Mammouth du PHP | 571 Messages

18 juil. 2019, 17:52

Pour ne pas avoir à faire le trans-typage de varchar vers int, l’idéal serait de choisir un type mysql compatible par rapport à la donnée que tu veux stocker. Cela te facilite grandement pour effectuer des calculs, des tris et surtout apporte un gain de performance. Dans ton cas des types comme SMALLINT, DATE seraient plus appropriés.


la lecture de tes 2 derniers messages laissent penser que les 2 colonnes(semaine_A, semaine_B) n'ont pas leur place dans la table où elles se trouvent mais devraient plutôt être dans une nouvelle table qui comporterait qu'une seule colonne des semaines.

Code : Tout sélectionner

semaine(id, numero ) //stocke toutes les semaines activite(id, titre, semaine_id) // où semaine_id représente le numéro de la semaine
A l'aide d'une requête sql avec jointure entre les 2 tables, on peux facilement récupérer toutes les semaines.