2016-06-12 10 views
1

2つのテーブルがあり、1つはすべてのデータを持ち、もう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    | 

に見えるようにしたいです

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 \ ''のバックティックはMySQLのように見えます。 –

+0

申し訳ありません、両方のタグを選択してはいけません。これはmysqlです – VeeK

答えて

2

サブクエリでmax dateと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の初心者です。テーブルにどうやって参加するのですか?そして、私は重複した回答も見ましたが、それは1つのテーブルだけのために全く異なっています – VeeK

+0

私の答えを編集しました:) – Philipp

+0

私はあなたがそこで何をしたかを見ます。ブリリアント。ありがとう、一束 – VeeK

関連する問題