2016-06-12 2 views
1

두 테이블이 있습니다. 하나는 모든 데이터가 있고 다른 하나는 주석 목록이 있으며 데이터 테이블의 각 행에 최신 코멘트를로드해야합니다. 여기 보이는 방법 SQL - 모든 행의 최신 주석을 반환하십시오.

같은 테이블 : queries

id | name  | 
-------------------- 
1  | John Doe | 
2  | Jane Doe | 
3  | Alex Smith | 

테이블 : messages

id | queriesId | comment  | dateAdded   | 
-------------------------------------------------------- 
1  | 1   | Comment 1 | 2016-06-12 15:00:08 | 
2  | 1   | Commetn 2 | 2016-06-12 15:01:08 | 
3  | 2   | Comment 3 | 2016-06-12 15:05:35 | 
4  | 2   | Comment 4 | 2016-06-12 15:06:35 | 

나는 결과가이 코드를 시도이

id | name  | comment  | dateAdded   | 
-------------------------------------------------------- 
1  | John Doe | Commetn 2 | 2016-06-12 15:01:08 | 
2  | Jane Doe | Comment 4 | 2016-06-12 15:06:35 | 
3  | Alex Smith | Null  | Null    | 

같이 할

,210
SELECT 
    a.*, 
    b.comment, 
    b.LastComment 
FROM 
    queries a 
LEFT JOIN 
    (
    SELECT 
    `comment`, 
    MAX(dateAdded) LastComment, 
     queriesid 
    FROM 
    messages 
    GROUP BY 
    queriesid 
) b ON a.id = b.queriesid 
GROUP BY 
    a.id 

하지만 얻는 결과는이

id | name  | comment  | dateAdded   | 
-------------------------------------------------------- 
1  | John Doe | Commetn 1 | 2016-06-12 15:01:08 | 
2  | Jane Doe | Comment 3 | 2016-06-12 15:06:35 | 
3  | Alex Smith | Null  | Null    | 

이다 그래서 유일한 문제는 댓글이 첫 번째 항목이 아닌 날짜 열 값에 해당하는 하나입니다. 나는 많은 변경을 시도했지만 작동하지 않는 것 같습니다. 나는 그것이 일하는 것에서 떨어져서 작은 비틀기 다라고 확신한다. 그러나 나는 그것을 발견하는 것처럼 보일 수 없다.

아이디어가 있으십니까?

+0

처럼? mysql 또는 sql 서버? –

+0

'\'comment \''의 백 틱 (tick)은 MySQL처럼 보입니다. –

+0

죄송합니다. 두 태그를 모두 선택하지 않아야합니다. mysql입니다. – VeeK

답변

2

하위 쿼리에서 최대 날짜 및 queryId를 선택하십시오. 그런 다음 날짜와 ID의 메시지에 다시 참여하여 댓글을 얻으십시오.

편집 : 당신이 사용하고있는 DBMS

SELECT 
    a.*, 
    b.LastComment, 
    comment.comment 
FROM 
    queries a 
LEFT JOIN 
    (
    SELECT 
    MAX(messages.dateAdded) LastComment, 
    messages.queriesid 
    FROM 
    messages 
GROUP BY 
    queriesid 
) b ON a.id = b.queriesid 
LEFT JOIN messages AS comment 
    ON comment.dateAdded = b.LastComment 
    AND comment.queriesid = b.queriesid 
GROUP BY 
    a.id 
+0

예제를 보여 주시겠습니까? 나는 mysql을 처음 사용하여 테이블 자체에 어떻게 가입하나요? 그리고 나는 똑같은 중복 답변을 보았습니다. 그러나 하나의 테이블에 대해서만 그렇듯이 꽤 다릅니다. – VeeK

+0

내 대답을 편집했습니다. – Philipp

+0

나는 당신이 그곳에서 한 것을 봅니다. 훌륭한. 고마워요 – VeeK

관련 문제