Bonjour,
Comment faire une pagination propre à partir de 2 tables jointes (LEFT), avec une clause WHERE sur la table jointe ?
Ce qui marche actuellement sans clause WHERE:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT o.*, ot.`tag`, ot.`value` as `tag_value` FROM ( SELECT o.* FROM `nx_order` AS o ORDER BY o.`date_order` LIMIT 20, 40 ) AS o LEFT JOIN `nx_order_tag` AS ot ON (ot.`order_id` = o.`id`)
Mais si je veux ajouter un filtre sur la table ot, par ex:
je suis coincé: la clause WHERE mise simplement dans la sous-requête génère une erreur (la table ot n'est pas connue);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 WHERE (ot.tag <> 'E')
et en ajoutant un autre LEFT JOIN dans la sous-requête, pour y faire rentrer la table ot, avec un GROUP BY sur la clé primaire de nx_order, la pagination devient erronée...
Merci pour vos idées et conseils.
Partager