如何获得属于同一组的文章

时间:2019-01-05 10:02:06

标签: mysql

我想检索属于同一组的同一文章的变体。 DBM是MySQL 5.7。

有2个表:

  1. 文章
  2. articles_group

表文章具有以下字段:

article_id | title
1            first product
2            second prod
3            3rd prod
4            4th example

表articles_groups:

group_id | article_id
1          1
1          2
1          3
2          4

在此示例中,我要检索与第1条在同一组中的所有其他文章。因此应该是第2条和第3条。

我最好的镜头,但是有点复杂:

SELECT 
    art.article_id, 
    model
FROM 
    articles art
INNER JOIN 
    articles_group art_g ON art.article_id = art_g.article_id
WHERE art_g.group_id = (
    SELECT ag.group_id
    FROM articles a
    INNER JOIN articles_group ag ON a.article_id = ag.article_id
    WHERE a.article_id = 1
)

如何以一种简单的方式检索属于给定文章的同一组的所有其他文章?如果有更好的设置,我仍然可以更改shema。

1 个答案:

答案 0 :(得分:0)

假设您给定的文章为1。要使给定文章在同一组中的所有文章,可以使用subquery来获取给定文章的group_id。然后使用外部查询将所有文章归入同一组。

SELECT a.article_id, a.title
FROM articles a
JOIN articles_groups g ON a.ref_id = g.ref_id
WHERE g.group_id = (
    SELECT g.group_id
    FROM articles a
    JOIN articles_groups g ON a.ref_id = g.ref_id
    WHERE a.article_id = '1'
)