多个数据库连接

时间:2011-01-30 20:34:49

标签: php sql mysql database join

我有三个表:categoriescontent_infocontent

  • categories表包含类别id及其parent类别的ID。
  • content_info包含两列:帖子ID的entry_id和帖子类别ID的cat_id
  • content表包含有关帖子的多个列,例如IDtitle等。

我在URL中有一个名为parent_id的变量,它对应于某个类别的parent。我想列出属于parent_id值为parent的类别的所有POSTS(不是CATEGORIES)。

例如,假设parent_id值为5.每个帖子可能属于ID为20的类别,但该类别属于父类别(其ID为5)。我想列出所有属于类别的帖子,其值parent无论当前的parent_id是什么。

有没有办法用MySQL加入而不是改变PHP?

2 个答案:

答案 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
相关问题