Fusionner 2 tableaux, trier les données par date

Résolu
ananias8686 Messages postés 96 Statut Membre -  
ananias8686 Messages postés 96 Statut Membre -
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 40050 Statut Modérateur 4 756
 
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 96 Statut Membre
 
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 40050 Statut Modérateur 4 756 > ananias8686 Messages postés 96 Statut Membre
 
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 40050 Statut Modérateur 4 756 > jordane45 Messages postés 40050 Statut Modérateur
 
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 24281 Statut Contributeur 1 584 > jordane45 Messages postés 40050 Statut Modérateur
 
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 96 Statut Membre > jordane45 Messages postés 40050 Statut Modérateur
 
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