0

这是我要查询的数据库结构的一部分:

数据库结构

关系如下:

  • article.art_author - user.usr_id
  • article.art_id - tag_article.rel_art_id
  • tag_article.rel_tag_id - tag.tag_id

如果可能,我想在一个查询中选择从选定用户(按 usr_id)或具有选定标签(按 tag_id)的文章。

我已经尝试过了,但没有给我想要的结果:

SELECT * FROM 
                ((article JOIN user on article.art_author = user.usr_id)
                JOIN
                tag_article on article.art_id = tag_article.rel_art_id)
                JOIN
                tag on tag_article.rel_tag_id = tag.tag_id
                WHERE
                article.art_lang = '$cur_lang'
                $sql_in
                ORDER BY
                article.art_date desc
                LIMIT $first_record, $range
4

1 回答 1

1
select distinct a.art_id
from article a,
    user u,
    tag_article ta,
    tag t
where a.art_author=u.user_id
    and ta.rel_art_id = a.art_id
    and ta.rel_tag_id = t.tag_id
    and (u.usr_id in (<your selected users>) or t.tag_id in (<your selected tag>))

我写了所有的关节,所以你可以选择你想要的所有列,但如果你只需要文章数据,它可以更快地完成:

select a.art_id
    from article a,
    tag_article ta
where a.art_id=ta.rel_art_id
    and (a.art_author in (<your selected users>) or ta.rel_tag_id in (<your selected tags>))
于 2012-11-22T20:28:18.803 回答