列出具有来自不同表的条件的数据

时间:2011-07-20 09:26:49

标签: mysql sql list sql-order-by

我有一个难以解释的问题,但我会尝试。首先,我想说出我想要做的事情。我有两个表,“作者”有作者ID,作者尼克和作者类型。 “条目”具有条目ID,条目主题,条目内容和条目的作者。 (有两种类型的作者:-normal和-banned)

首先,我使用此查询列出主题:

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

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

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

我希望您帮助我编写能够管理此示例的查询:

  

主题列表:a b c d

如果普通作者输入主题'c',则列表应为

  

c a b d

禁止作者进入主题'b',列表应为

  

c a b d

不是

  

c a d

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

2 个答案:

答案 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

答案 1 :(得分: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