Fusionner 2 tableaux, trier les données par date

Résolu/Fermé
ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023 - Modifié le 6 oct. 2021 à 22:28
ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023 - 7 oct. 2021 à 10:11
Bonsoir à tous
J’ai 2 tableaux contenant chacune une liste.
Je voudrais fusionner les deux tableaux ensemble en fonction de la date( tran_acct.date et int_transfer.date).

Je voudrais que vous m’aidiez.
 SELECT * FROM tran_acct
WHERE user_id = 142 AND type=1  
ORDER BY tran_acct.date DESC 
UNION 
SELECT * FROM int_transfer WHERE  user_id = 142 
ORDER BY int_transfer.date DESC 

Ma requête ne fonctionne pas, erreur d UNION
A voir également:

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
6 oct. 2021 à 23:06
Bonjour,
Ma requête ne fonctionne pas, erreur d UNION

C'est à dire ? Le message d'erreur devrait t'indiquer ce qui cloche ....

A savoir que pour faire des UNION tu dois retourner le même nombre de champs dans chaque select
SELECT c1,c2,c3
FROM t1
UNION
SELECT c1,c2, "truc" as c3
FROM t2


0
ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023
6 oct. 2021 à 23:15
La table tran_acct contient 8 champs(il y a un champ qui ne m’intéresse pas), la table int_transfer 7 champ
Voici l’erreur SQL

1064 - Erreur de syntaxe près de 'UNION
SELECT * FROM int_transfer WHERE user_id = 142
ORDER BY int_transf...' à la ligne 4
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023
6 oct. 2021 à 23:17
Alors

1 faut virer le order by du premier select
2 il ne faut pas utiliser * mais bien spécifier le nom des champs comme dans mon exemple
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
6 oct. 2021 à 23:18
Et pour le tri, tu pourras utiliser un alias, comme dans l'exemple que je t'ai donné, et donc à la fin de la requête, trier dessus
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
7 oct. 2021 à 09:53
bonjour Jordane,
je pense que une requête UNION n'utilise que les noms (et alias) du premier SELECT. le "as" est alors inutile dans le second SELECT.
0
ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
7 oct. 2021 à 10:11
Bonjour,
J’ai dû redonner mes colonnes dans la base de donnée et ça a marché avec cette requête.
 SELECT ref,amount,type,date
FROM int_transfer
WHERE user_id=142
UNION
SELECT ref,amount,type,date
FROM tran_acct
WHERE user_id=142
ORDER BY date DESC 

Je vous remercie beaucoup
0