2011-07-20 47 views
0

我有一个难以解释的问题,但我会尝试。首先,我想说我想做什么。我有两个表格,“作者”有作者编号,作者编号和作者类型。 “条目”具有条目标识,条目主题,条目内容和条目的作者。 (有2种类型作者: - 正常和-banned)根据不同表格的条件列出数据

起初,我就是用这个查询列出主题:

"SELECT distinct topic FROM entries ORDER BY id DESC LIMIT $l1, $lim"; 

但我有一个问题。我希望查询列出按普通作者最后一个条目ID排序的主题,这意味着忽略所有禁止作者的条目。

我尝试了几种不同的代码,但是我可以管理的只是列出了最后一位作者未被禁止的主题。所以它导致忽视了被禁止作者输入的主题,即使它内部有正常作者。

我要你帮我写,可以能够管理这个例子查询:

话题列表:ABCD

如果一个正常的作者进入主题“C”,该名单应和

CABD

并禁止进入笔者主题 'B',清单应

CABD

CAD

我知道我无法解释我的整个期望,但我想要的是写一个查询,使用这两个表,从作者表中获取作者类型,其中作者姓名=条目的作者,和列表g根据非禁止作者的作品排序的主题(不同的)排序。谢谢。

+0

还能有多个条目与同一条目ID?每个作者一个? –

+0

不,条目标识是主键。作者没有限制或规则enrtries。他们可以在相同或不同的主题上撰写无限的条目。 – Wond

+0

那么你怎么知道不同的条目属于一起? –

回答

0

你需要的东西,如:

SELECT * 
FROM topic inner join entries on topic.topicID = entries.topicID 
WHERE entries.entryID in 
     (Select Max(entryID) 
      From entries inner join authors on entries.authorID = authors.authorID 
      Where author.authorType = 'normal' 
      Group By topicID) 
ORDER BY entries.entryID desc 
0
SELECT 
    e.topic 
FROM entries e 
    LEFT JOIN authors a ON a.id = e.author 
GROUP BY 
    e.topic 
ORDER BY 
    COALESCE(MIN(a.type), '') = 'banned', 
    e.topic