Natrafiłem na pewny problem podczas wyciągania danych z bazy danych. Tak więc mam trzy tabele (skrypt dodawarki do katalogów

sites z kolumnami: site_id, user_id, site_url, site_anchors, site_descriptions, site_authoremail, site_categories, site_subcategories
catalogs: catalog_id, catalog_url, accepted, typ, pagerank
reports: report_id, site_id, added_catalog_id, report_text, report_type
I teraz mamy np. jedną stronę dodaną do sites z ID 1 (reszta jest akurat nie ważna przy tym co próbuję rozwiązać), do tego mamy trzy katalogi stron o ID: 1,2,3
Teraz jeśli w reports widnieje wiersz gdzie site_id=1 i np. added_catalog_id=2 to znaczy że strona o ID 1 została dodana do katalogu o ID 2, teraz zakładamy że w report widnieją trzy wiersze o site_id=1 i added_catalog_id kolejno od 1 do 3 co oznacza że strona została dodana do trzech katalogów.
Teraz chciałbym wyciągnąć do jakich katalogów została dodana strona więc zrobiłem zapytanie:
SELECT s.*, c.*, r.* FROM sites s, catalogs c, reports r WHERE r.site_id='1' AND c.catalog_id IN ( r.added_catalog_id ) AND s.site_id='1
Tutaj wszystko jest spoko i otrzymuje 3 katalogi, problem zaczyna się gdy chce wyciągnąć do jakich katalogów nie została dodana (zakładamy że w bazie jest razem około 800 katalogów) tak więc takie zapytanie:
SELECT s.*, c.*, r.* FROM sites s, catalogs c, reports r WHERE r.site_id='1' AND c.catalog_id NOT IN ( r.added_catalog_id ) AND s.site_id='1
Powinno wyciągnąć 797 rekordów ale nie ono wyciąga koło 2300

Czy ktoś mógłby mnie naprowadzić jak rozwiązać ten problem i aby wyciągał taką ilość katalogów jaką powinien (mogę spokojnie przebudować tabelę itp.

Pozdrawiam