Je suppose qu'il existe une table qui identifie pour chaque utilisateur les langues qu'il utilise avec leur niveau de priorité.
Cette table aurait la structure suivante :
user_language_priority (id_user, id_language, priority)
A partir de là, la requête est assez simple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| WITH libelle
AS ( SELECT cat.id_category
, lct.name
, lgp.priority
FROM category AS cat
INNER JOIN
language_category AS lct
ON cat.id_category = lct.id_category
INNER JOIN
user_language_priority AS lgp
ON lct.id_language = lgp.id_language
WHERE lgp.id_user = 'XXX'
)
SELECT lbl.id_category
, lbl.name
FROM libelle AS lbl
WHERE EXISTS
( SELECT NULL
FROM libelle sel
WHERE lbl.id_category = sel.id_category
HAVING lbl.priority = MIN(sel.priority)
)
ORDER BY lbl.name ASC |
Partager