2012-07-24 83 views
1

我刚才问了这个问题Find the oldest record in a join between two tables,并得到了很好的回答。问题是,是不是完全是我一直在寻找(我的错)用最少的关联记录查找记录

考虑以下MySQL表

Table: Questions 
    ID 

Table: Results 
    ID 
    Created - When this record was added. 
    Q_ID - A FK to the Question table 

实例数据

Table: Questions 
    ID 
    ---- 
    1 
    8 
    15 
    55 

Table: Results 
    ID | Created | Q_ID 
    -------------------- 
    1 | 12:02 | 1 
    2 | 12:03 | 15 
    3 | 12:04 | 8 

使用下面的查询,它会返回所有记录都没有与它们相关的结果,如果所有记录都有结果,那么它将返回最旧结果的问题。

SELECT * 
FROM 
    questions 
    LEFT JOIN results 
     ON results.q_id = questions.id 
ORDER BY 
    ISNULL(results.id) DESC, results.created ASC 
LIMIT 1 

什么我实际上是寻找是尚未答复,然后进行排序的问题我的,他们有多少次得到答复计数的任何问题。最好回答的问题应该在顶部。

+0

似乎有点混乱。以您的例子为例,您期望在结果集的顶部会出现什么问题? – 2012-07-24 05:00:05

回答

2

这会为您提供每个问题以及与其关联的结果数量(即使没有结果)。他们将以最低的数量排在最前面:

SELECT Questions.ID, COUNT(Results.ID) Result_Count 
FROM 
    Questions 
    LEFT JOIN Results ON Questions.ID = Results.Q_ID 
GROUP BY Questions.ID 
ORDER BY COUNT(Results.ID) 

这是您的想法吗?