0

質問:次の情報を満たすために、誰かが次のコードを修正するのを手伝ってもらえますか?

このクエリを使用すると、ユーザー名がデータベースのdiff列に複数回存在することがわかります。そのため、クエリで投稿が見つかったときに投稿が重複しています。同じ人物による異なるタイムスタンプで投稿を表示したいのですが、タイムスタンプが同じである場合は同じ人物からの投稿を表示しません。

クエリをコーディングするためのより良い方法かもしれません。もしそうなら、私はそれらのオプションを見てもかまいません。UNIONクエリを実行することがこれを行うための最良の方法でしょうか?

$query = "SELECT p.* ".
"FROM posts p ".
"INNER JOIN friendships f ON p.username = f.user2 OR p.username = f.user1 ".
"WHERE f.user1 = '$sessionusername' OR f.user2 = '$sessionusername' ORDER BY id DESC"; 

解決:

私はここで私自身の質問に答えています。問題を解決するために私がしたことから誰かに実行可能な解決策を与えるためです。IDでグループ化してから、向きを変えてIDで並べ替えてみました。ただし、エラーが発生しました。代わりに、タイムスタンプで並べ替え、IDでグループ化します。以下は私のコードです。私のために働いた-そしてうまくいけば、これは他の誰かを助けることになります!

$query = "SELECT p.*, MAX(timestamp) AS latest ".
"FROM posts p ".
"INNER JOIN friendships f ON p.username = f.user2 OR p.username = f.user1 ".
"WHERE f.user1 = '$sessionusername' OR f.user2 = '$sessionusername' GROUP BY id ORDER BY  latest DESC";   
4

1 に答える 1

1

GROUP BYを使用して、一意にしたいエンティティ/フィールドをmysqlに通知します。

SELECT p.*
FROM posts p
INNER JOIN friendships f ON (p.username = f.user2 OR p.username = f.user1)
WHERE f.user1 = '$sessionusername' OR f.user2 = '$sessionusername' 
GROUP BY posts.id
ORDER BY id DESC
于 2012-07-05T05:34:56.607 に答える