通知をチェックするための非常に巨大なSQLクエリがあり、テーブルにはいくつかの異なるタイプの通知があります。IE:投稿、いいね、コメント、photoComments、photoLikes、videoLikesなど(常に追加します)問題が発生した場合、これを行う最善の方法がわかりません。これまでのところ、これまでの方法は完璧に機能しており、追加するのは非常に簡単ですが、この1つの通知タイプでは、他の1つのテーブル以上をチェックする必要があり、他の2つのテーブルをチェックする必要があります。それを機能させる。
だからここにあります:(これは私の巨大なクエリの一部であり、実際に関連する唯一の部分です)
n.uniqueID = ANY (
SELECT photos.id
FROM photos INNER JOIN posts ON (photos.id=posts.post)
WHERE photos.state=0
AND posts.state=0
AND posts.id = ANY (
SELECT likes.postID FROM likes
INNER JOIN posts ON (posts.id=likes.postID)
WHERE likes.state=0 AND posts.state=0
)
)
つまり、基本的に私が本当に行う必要があるのはstate
、各テーブルの列をチェックすることだけです。これは、テーブルが削除されているかどうかを示しているためです(0でない場合は、削除されて返されるべきではありません)。
IF photos.state=0 AND posts.state=0 AND likes.state=0
それを返します。
n.uniqueID
、、、posts.post
およびphoto.id
はすべて同じ値になります。posts.id
またlikes.postID
、同じ値になります。
私の問題は、それがチェックしていないようだということですlikes.state
、私は思いません。