2017-03-01 1 views
0

私はこのトピック検索まず、私はいくつかの同じトピックのスレッドを発見した、しかし、私は私のシナリオにそれを適用する方法を理解していない:私は2つのテーブルを持っている/ソート

ことこのクエリが関係します。

Table : Discussions   Table : Comments 
--------------------   ------------------------------------- 
|id | content  |   | id | d_id | content | timestamp | 
--------------------   ------------------------------------- 
| 1 | Text String |   | 1 | 2 | Comment 1 | timestamp | 
| 2 | Text String |   | 2 | 3 | Comment 2 | timestamp | 
| 3 | Text String |   | 3 | 4 | Comment 3 | timestamp | 
| 4 | Text String |   | 4 | 2 | Comment 4 | timestamp | 
| 5 | Text String |   | 5 | 3 | Comment 5 | timestamp | 
--------------------   ------------------------------------- 

今私はUnixタイムスタンプに応じてコメントテーブルにD_IDを使用して、それをソートする必要が議論のテーブル&からIDを取得する必要があります。

最近のコメントでの議論は、まずウェブサイトに掲載されます。

あなたは考えがあるといいですね。これについてSQLクエリを書く方法を教えてください。

+0

期待される出力も表示する必要があります。これは 'Discussions.id = Comments.d_id'の2つのテーブルに参加する必要があるようですが、どのようにソートするかは明確ではありません。 –

答えて

0

私はよくあなたの質問を理解する場合は、EDIT 2つのテーブル

select Comments.d_id, Discussions.content as d_content, Comments.content as c_content 
from Comments 
join Discussions 
on Discussions.id = Comments.d_id 
order by Discussions.id, Comments.timestamp 

に参加する必要があります。

select Comments.d_id, Discussions.content as d_content, Comments.content as c_content 
from Comments 
right join Discussions 
on Discussions.id = Comments.d_id 
order by Discussions.id, Comments.timestamp 
+0

これは最近投稿されたディスカッションに関連するコメントがないとどうなりますか? –

+0

@シアーマンアイズそれは結果の中にはありません。結果の中でこれらのレコードを見たい場合は、右結合を使用することもできます。 –

+0

使い方はどうですか?以前は左結合で試しましたが、うまくいかなかったのですか?左結合のクエリを投稿できますか? –

0

単純結合は、コメントの数として(それぞれの議論を複数回取得します議論がある)。 このクエリは、ほとんど一度にそれぞれの議論が返されます:もちろん

SELECT d_id FROM Comments GROUP BY d_id ORDER BY MIN(timestamp) DESC 

、あなたがより多くのデータが必要な場合は、ちょうどDiscussions.id、あなたには、いくつかの結合行う必要があるでしょうではありません。

このクエリでは、コメントのない議論IDは返されないことにも注意してください。それにも参加する必要があります。