J'ai une table en MariaDB qui contient des listes de documents, un document est structuré comme ceci:

  • ID
  • Nom
  • User_ID
  • Category_ID
  • Groups

Les documents sont mis à jour regulierement et sont recuperé par le group plus grand c'est à dire qu'un document peut etre mis à jour aujourd'hui et dispose du group = 1, et demain tous les documents sont mis à jour et dispose tous d'un group = 2 . Ce group est different pour chaque utilisateur (user_id) .

Ce que je veux

Mon probleme est qu'il faut que je recupere (pour chaque utilisateur, exemple User_ID = 10) des documents qui ont les memes nom , du meme group mais repeté dans plusieurs catégories differentes au moins 3 fois.

J'ai fait :

select d.* from docs as d where user_id = 10 and groups = (select max(groups) from docs where user_id = d.user_id and category_id = d.category_id) group by d.nom, d.groups having count(*) > 2

Ce que j'obtiens

Le probleme avec ca est qu'il y a des documents qui ont les meme groups et meme category_ID et meme nom qui reviennent 2 fois alors qu'il faut les exclure aussi

Donc je cherche un moyen via PHP de comparer la collection retournée par la requete et d'exclure ces types de resultats ou de l'exclure via SQL directement.

Aucune réponse