一尘不染

多个数据库联接

sql

我有三个表:categoriescontent_info,和content

  • categories表包含类别的名称id和其parent类别的ID 。
  • content_info包含两列:entry_id为这篇文章的ID和cat_id该职位的类别的ID。
  • content表包含有关后多列-如IDtitle

我在网址中有一个名为parent_id的变量,它对应于parent一个类别。我想列出所有属于parentparent_id值类别的帖子(而不是类别)。

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

有没有一种方法可以通过MySQL联接而不是更改PHP?


阅读 169

收藏
2021-03-08

共1个答案

一尘不染

这应该做到这一点:

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>)
2021-03-08