MySQL RIGHT JOIN

0

Witam
Mam taki problem:
W tabeli A mam powiedzmy posty.
W tabeli B mam komentarze.
Jak mam sformułować zapytanie aby baza zwróciła mi id_posta który nie ma komentarzy (czyli nie ma rekordów w tabeli B).
Coś jak odwrotny JOIN czyi zwraca mi wszystkie id posta dla których nie ma w tabeli B komentarzy
Oczywiście pole wspólne w A i B to id_posta
Dziękuje za wszelką pomoc

0

Dodam jeszcze że w tabeli B może być tylko jeden komentarz a wiec jeden post jeden powiązany komentarz o wspólnym id_posta nie trzeba używać count jest albo nie ma jeśli nie ma musi zwrócić id_posta z tabeli A.

0

SELECT idPostaA FROM A WHERE NOT EXISTS(SELECT idPostaB WHERE idPostaB = idPostaA)
albo
SELECT idPostaA FROM A WHERE idPostaA NOT IN(SELECT idPostaB)
albo
SELECT idPostaA FROM A LEFT JOIN B ON idPostaA = idPostaB WHERE komntarzB IS NULL

Jeśli nie wszystkie to któreś powinno zadziałać.

0

Szukałem właśnie NOT EXISTS, próbowałem to robić w NOT IN ale mi nie działało wcześniej.

Po przerobieniu pierwszego działa i wygląda to tak:

SELECT pot_id FROM A WHERE NOT EXISTS(SELECT post_id FROM B WHERE B.post_id = A.post_id

Dziękuje za pomoc

0
 
select
  A.Id 
from
  A left outer join B on(A.Id=B.Id)
group by 
  A.Id
having count(B.Id)=0
1

SELECT DISTINCT p.id
FROM posty as p
LEFT JOIN komentarze as k on k.post_id = p.id
WHERE k.id is null

to zwróci Ci tylko i wyłącznie unikatowe identyfikatory postów, które nie mają komentarzy,
bez liczenia, bez egzistów itp

1 użytkowników online, w tym zalogowanych: 0, gości: 1