0

私は現在プロジェクトに取り組んでおり、私が抱えている特定の問題についてしばらく探し回っていたので、質問を投稿するためにここに来ました。

基本的に、開発中のサイトで通知を処理するテーブルがあり、GROUP BY を使用して冗長な通知を処理しています。たとえば、誰かが同じことについて複数回コメントした場合、最新の通知のみを表示したいのです。私が使用しているクエリの例を次に示します (PHP で PDO ドライバーを使用しています)。

SELECT * FROM
((SELECT `a`,`b`,`c` FROM `table` WHERE `c` IN ($array) AND `b` IN ('a','b') AND  `read`='false' AND `id`!='xxx' GROUP BY `c` )
UNION ALL
(SELECT `a`,`b`,`b` FROM `table` WHERE `b` IN ('a','b') AND `id`='xxx' AND `read`='false' ) ) as x ORDER BY `id` DESC LIMIT 15

問題はこのクエリの後にあるため、基本的に、通知ウィンドウで、ユーザーがこれらすべてを表示すると、すべての読み取り列を true に設定します。ユーザーがページをリロードすると、最初は意図的に非表示にするつもりだった次の通知が表示されます。

基本的に、元のクエリに一致しないものをすべて true に設定して、元の通知が表示された後に再度表示されないようにするにはどうすればよいですか。事後に新しい通知が作成された場合でも、明らかにこれらを表示したいと思います。

ご提案がありましたら、お知らせください。

4

1 に答える 1

0

ちなみに、将来誰かがこの問題に遭遇した場合に備えて、私はこれを理解しました. 結果セットをループしている間に、各 ID を配列に格納しました。この後、別のクエリを設定して、配列に含まれていないすべての ID を、元の 2 つの最小 ID と最大 ID の間で「読み取る」ように設定しました。それは完全に機能します。ここでの回答が最善だったかどうかはわかりませんが、質問がある場合はお知らせください。

再度、感謝します!

于 2012-10-16T00:17:14.407 に答える