2012-07-24 2 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

조금 혼란 스럽습니다. 당신의 예제를 감안할 때, 결과 집합의 최상위에있을 것으로 예상되는 질문은 무엇입니까? –

답변

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) 

염두에 두었던 것이 이것입니까?