2

私はpostsテーブルを持っています。各投稿には、テーブルtopic_idの適切なidフィールドに対応するフィールドがありtopicsます。

topicsテーブルのdate_createdフィールドで並べ替える必要がありpostsます。

また、各トピックにはがforum_idあり、特定のトピックのみを表示して並べ替える必要がありますforum_id

私はこのようなことを試みました:

SELECT 
   topics.id, topics.title 
FROM 
   topics RIGHT JOIN posts ON topics.id = posts.topic_id
WHERE 
   topics.forum_id = 1 
ORDER BY 
   posts.date_created DESC

ただし、すべてのトピックに投稿が関連付けられているわけではありません。投稿がないものは返却されません。

それを修正する方法は?

4

3 に答える 3

1

RIGHTJOINの代わりにLEFTJOINを使用してみてください

于 2012-12-18T12:45:51.717 に答える
1
SELECT 
   topics.id, topics.title 
FROM 
   (topics RIGHT JOIN posts ON (topics.id = posts.topic_id))  
WHERE 
   topics.forum_id = 1 
ORDER BY 
   posts.date_created DESC

これを試して

于 2012-12-18T12:47:47.163 に答える
0

投稿にデータがないため、行が失われた可能性があります。次のように ifnull 関数で null 値をキャストしてみてください。

SELECT 
   topics.id, topics.title 
FROM 
   topics LEFT JOIN posts ON topics.id = posts.topic_id
WHERE 
   topics.forum_id = 1 
ORDER BY 
   ifnull(posts.date_created, '1900-01-01 00:00:00') DESC
于 2012-12-18T13:22:37.787 に答える