je le tableau MySql suivant:Déclaration SQL (JOIN)
--------------------------------------------
Table 'category'
--------------------------------------------
category_id name parent_id
1 animal NULL
2 vegetable NULL
3 mineral NULL
4 dog 1
6 cat 1
7 carrot 2
8 quartz 3
L'instruction SQL répertorie tous les résultats comme celui-ci:
category_id category sub_category
4 animal dog
6 animal cat
7 vegetable carrot
8 mineral quartz
SELECT sub_category.category_id AS category_id,
category.name AS category,
sub_category.name AS sub_category
FROM category
LEFT OUTER JOIN category AS sub_category
ON sub_category.parent_id = category.category_id
WHERE category.parent_id IS NULL
ORDER BY category_id
Mais maintenant, j'ai une autre table catégories pour lesquelles les utilisateurs particuliers ne sont pas intéressés:
--------------------------------------------
Table 'category_filter'
--------------------------------------------
user_id category_id
1 4
1 7
1 8
Comment puis-je faire une requête pour un utilisateur particulier afin que j'obtienne une liste de toutes les catégories avec une information si un utilisateur est intéressé ou pas?
Quelque chose comme ceci par exemple:
--------------------------------------------------------------
category_id category sub_category interested
4 animal dog NULL
6 animal cat 6
7 vegetable carrot 7
8 mineral quartz NULL
Merci d'avance pour votre soutien.
Malheureusement, celui-ci obtient une liste des catégories parentes (animal, légume, minéral) au lieu des sous-catégories. –
@Mark Fischer: J'ai manqué un critère de jointure sur les sous-catégories pour m'assurer que les parents ne sont pas inclus, mais la requête renverrait des sous-catégories. Veuillez réessayer avec l'instruction mise à jour. –
Malheureusement toujours les mêmes résultats (seulement les catégories parentes). –