Zgadza się, więc chcesz postów napisanych przez kogoś innego niż $user, w których nie pojawia się „instancja” (wydaje się oznaczać „odpowiedź”) dla $user. Z tego zestawu chcesz wybrać dziesięć różnych postów.
Jeśli to trafne sformułowanie problemu, zrobi to, czego chcesz:
SELECT *
FROM posts p
WHERE p.user_id <> 3
AND NOT EXISTS (
SELECT 1
FROM instances i
WHERE i.post_id = p.id
AND i.helped_by_user_id = 3
)
ORDER BY p.id
LIMIT 10;
Ogólnie rzecz biorąc, wydaje się, że problem polega na tym, że problem nie jest wyraźnie sformułowany. Zwykle, jeśli potrafisz jasno powiedzieć po angielsku, czego chcesz od zbioru danych, łatwo jest przetłumaczyć to na użyteczny SQL.