あなただけのproduct_idあたりの最近のコメントをしたい場合、またはあなたがすべてのコメントをしたい場合は異なりますが、最新のコメント付きの製品が最初にある場合だけのproduct_idによって並べ替え。
あなたはproduct_idsが最新コメントの順にソートされたproduct_idによってグループ化すべてコメント、(すなわちしたい場合は、最新のタイムスタンプ順に製品を提案する方法を見るためにある(3,1,2 ):
product_id comment_timestamp
3 2012-03-13
3 2012-03-09
3 2012-03-01
1 2012-03-12
1 2012-01-01
2 2012-03-11
は次にここにあなたがそれを行うことができる方法だ - 、製品ごとの最新のタイムスタンプを見つけるあなたのメインクエリにそれを登録しようと、それによって順:
SELECT comments.products_products_id, products.name,
products.minilocation, products.users_user_id,
comments.comment, comment_id, comments.time_stamp,
users.username, users.miniavatar
FROM products
-- NEW JOIN:
INNER JOIN (SELECT product_id, MAX(time_stamp) as latest
FROM comments
GROUP BY product_id) latest
ON latest.product_id = products.product_id
-- as before.
INNER JOIN comments ON comments.products_products_id = products.products_id
INNER JOIN users ON users.user_id = comments.products_users_user_id
-- NEW SORT:
ORDER BY latest.latest DESC, comments.time_stamp DESC
新しいテーブルが結合されました。最新の)製品IDごとのタイムスタンプ。 これは単一の製品ID内で同じになります。
我々ソートすることにより、この最初の(最新コメントのタイムスタンプでソートする)、および各製品ID内の個々のコメントのタイムスタンプによってその後、ソート。
あなたがたproduct_idあたりの最も最近のコメントをしたい場合、すなわち
product_id comment_timestamp
3 2012-03-13
1 2012-03-12
2 2012-03-11
次に使用:
SELECT comments.products_products_id, products.name,
products.minilocation, products.users_user_id,
comments.comment, comment_id, comments.time_stamp,
users.username, users.miniavatar
FROM comments
-- NEW SELF-JOIN
LEFT JOIN comments c2 ON comments.products_products_id = c2.products_products_id
AND comments.time_stamp < c2.time_stamp
INNER JOIN products ON comments.products_products_id = products.products_id
INNER JOIN users ON users.user_id = comments.products_users_user_id
-- new condition
WHERE c2.time_stamp IS NULL
ORDER BY comments.time_stamp DESC
をクエリのこの種は、 "グループあたり最大n個" と呼ばれ、あなたされます基本的にあなた自身のCOMMENTSテーブルをのの各product_idに登録してください。また、あるテーブルのタイムスタンプが他のテーブルよりも少なくなるように、それを結合します。 WHERE
条件は、そのproduct_id、すなわち最新のコメントに対するタイムスタンプがより大きくならないように行を選択する。
comments.products_products_idは実際のコメントですか.products_idですか? –
最新のコメントで注文するには、アイテムのすべてのコメントが一緒になっていることを確認してください。 –
すべてのIDは正しいです。うん、基本的にちょうどちょうどちょうどその上に最新のコメント活動で製品を置いてほしい。製品IDに重複がありません。 – Anonymous