On Wed, May 4, 2022 at 8:36 AM Alexander Farber <alexander.far...@gmail.com> wrote:
> David, I try then the following - > > On Wed, May 4, 2022 at 5:28 PM David G. Johnston < > david.g.johns...@gmail.com> wrote: > >> You missed quoting the part where I describe the on clauses you need to >> distinguish between "them" and "me" >> >> Me: u.uid in (player...) and (s.uid = u.uid) >> Them: u.uid in (player...) and (s.uid <> u.uid) >> >> > > https://dbfiddle.uk/?rdbms=postgres_14&fiddle=048b9b9c7c55256c1a478d7c90cd2667 > > SELECT > CASE WHEN c.uid = s.uid THEN 1 ELSE 0 END, > c.msg > FROM words_chat c > JOIN words_games g USING (gid) > JOIN words_users myself ON (myself.uid IN (g.player1, > g.player2) AND myself.uid = s.uid) > JOIN words_users opponent ON (opponent.uid IN (g.player1, > g.player2) AND myself.uid <> s.uid) > JOIN words_social s ON (s.uid = myself.uid) > WHERE c.gid = in_gid > AND s.social = in_social > AND s.sid = in_sid > AND (c.uid = myself.uid OR NOT opponent.muted) > > ORDER BY c.CREATED ASC; > > And get the syntax error which don't quite understand: > > ERROR: missing FROM-clause entry for table "s" > LINE 57: ...yself.uid IN (g.player1, g.player2) AND myself.uid = s.uid) > ^ > > Probably because "myself" needs "s" and vice versa? > > Well, that is basically why I was going on about the oddity of having social be a part of the main query. Personally I would write it as "myself.uid = in_uid", but you don't have an in_uid to reference. Decide how you want to do something equivalent. David J.