Поскольку между A и C нет никакой связи, объединение в основном будет декартовым.
Любые добавленные вами условия будут соответствовать вашим требованиям. Если вы сможете опубликовать некоторые данные из своих таблиц, это поможет понять ваш случай.
Допустим, у вас есть 2 таблицы учеников (с 10 строками) и классов (3 ряда), и теперь вы хотите вставить строки в третью таблицу (student_class_enrol). Если у вас нет особых условий, основная вставка будет ...
insert into student_class_enrol (student_id, class_id)
select s.student_id, c.class_id
from students s, classes c;
, который вставит 30 строк для каждого ученика во всех 3 классах.
Чтобы избежать этой декартовой "ситуации", вы можете добавить условия непосредственно после запроса, как вы делали в своем вопросе ...
insert into student_class_enrol (student_id, class_id)
select s.student_id, c.class_id
from students s, classes c
where (s.student_id not in (1,2,3) and c.class_id <> 4) ;
или добавьте условия отдельно, а затем выполните объединение.
insert into student_class_enrol (student_id, class_id)
select s.student_id, c.class_id
from (select student_id from students where student_id not in (1,2,3)) s
(select class_id from class where class_id <> 4) c;