我有三个表:categories
,content_info
和content
。
categories
表包含类别id
及其parent
类别的ID。content_info
包含两列:帖子ID的entry_id
和帖子类别ID的cat_id
。content
表包含有关帖子的多个列,例如ID
,title
等。我在URL中有一个名为parent_id的变量,它对应于某个类别的parent
。我想列出属于parent_id值为parent
的类别的所有POSTS(不是CATEGORIES)。
例如,假设parent_id值为5.每个帖子可能属于ID为20的类别,但该类别属于父类别(其ID为5)。我想列出所有属于类别的帖子,其值parent
无论当前的parent_id是什么。
有没有办法用MySQL加入而不是改变PHP?
答案 0 :(得分:3)
这应该这样做:
SELECT c.* FROM content
JOIN content_info ci ON ci.entry_id=c.id
JOIN categories cat ON cat.id=ci.cat_id
WHERE cat.parent_id=<parent_id>
这会返回属于父级为content
的类别的所有帖子(parent_id
行)
或者使用子查询:
SELECT c.* FROM content
JOIN content_info ci ON ci.entry_id=c.id
WHERE ci.cat_id IN (SELECT id
FROM categories cat
WHERE cat.parent_id=<parent_id>)
答案 1 :(得分:0)
SELECT c.*
FROM content c,
categories cat,
content_info ci
WHERE c.id = ci.entry_id
AND cat.id = ci.cat_id
AND cat.parent_id = 5