Fusionner 2 tableaux, trier les données par date

Résolu
ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   -  
ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > ananias8686 Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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