Bonjour,

J'ai un peu de mal avec une de mes requêtes pourtant pas bien compliquée, le but est de rechercher dans plusieurs tables les dernières nouveautés, et ce en comparant les dates de dernières modifications.

Pour simplifier, j'ai deux tables : plantes et plantes_produits avec comme structures respectives :

plante_id,nom,maj (ce sont les colonnes de la table plantes)
id,plante_id,nom,maj (ce sont les colonnes de la table plantes_produits)

Je souhaite non seulement afficher les enregistrements par "maj" décroissant, mais aussi éviter les doublons, par exemple :

un enregistrement de la table plantes qui a pour plante_id=3 et un autre enregistrement de la table plantes_produits qui pour plante_id=3 ne doivent être affichés qu'UNE SEULE FOIS.

Je suis arrivé à la requête suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT id,plante_id,nom,maj FROM (
	(SELECT id,plante_id,nom,maj FROM `plantes_produits` AS t1 ORDER BY maj DESC)
	UNION (SELECT null,plante_id,nom,maj FROM `plantes` AS t2 ORDER BY maj DESC)
) AS t_all
ORDER BY maj DESC
LIMIT 6
Et ça marche... à moitié.

J'ai donc, en parcourant la doc et des forums, rajouté GROUP BY plante_id avant ORDER BY... de telle manière à ne pas avoir de doublon. Mais tous les résultats sont chamboulés.

Avez-vous une idée ?

Merci d'avance