从查询中排除已分配的文章

时间:2012-12-01 19:28:49

标签: mysql

我有一个查询打印分配给当前文章类别的所有文章

SELECT * FROM #__content WHERE catid='$catid'

在此表(下方)中,有些文章被分配给当前文章作为类似文章

assigned_id   fav_id
     1          45
     1          12
     1          53

SELECT fav_id FROM #__similar WHERE id='$id'

我希望它们隐藏在第一个查询中,该查询输出所有文章,包括一个被分配为相似的文章。因此,在此示例中,将排除ID为45,12,53的文章

2 个答案:

答案 0 :(得分:2)

试试这个

    SELECT * FROM #__content c
     INNER JOIN #__similar s
    ON c.article_id != s.fav_id
    WHERE catid='$catid'

答案 1 :(得分:1)

完整查询:

SELECT distinct c1.* 
FROM #__content c1
LEFT OUTER JOIN #__similar S on S.fav_id = c1.id
LEFT OUTER JOIN c2 on c2.catid='$catid' and c2.id = S.assigned_id
WHERE c1.catid='$catid' and c2.id is null

如您所见,查询将__content与__similar thourh fav_id连接起来,这意味着,查询是否正在查看此内容是否与其他内容相似。在最后一次加入中,我认为类似项目属于同一类别。