Как я могу добавить записи, которых еще нет в таблице, из декартова запроса продукта?

Мой текущий запрос возвращает все возможные результаты из двух таблиц и вставляет их в соединительную таблицу.

Мой текущий запрос выглядит так:

INSERT INTO tblJunction_Courses_Software ( CourseID, SoftwareID )
SELECT tblCourses.CourseID, tblSoftware.SoftwareID
FROM tblSoftware, tblCourses
WHERE (((tblSoftware.Exclude)=No));

Как я могу добавить дополнительное предложение, чтобы убедиться, что повторяющиеся данные не добавляются каждый раз при выполнении запроса?


person mARC    schedule 24.03.2015    source источник


Ответы (1)


Я думаю, вы можете делать то, что хотите, с предложением not exists:

INSERT INTO tblJunction_Courses_Software ( CourseID, SoftwareID )
     SELECT c.CourseID, s.SoftwareID
     FROM tblSoftware as s CROSS JOIN tblCourses as c
     WHERE s.Exclude = No AND
           NOT EXISTS (SELECT 1
                       FROM tblJunction_Courses_Software as cs
                       WHERE cs.CourseId = c.CourseId AND
                             cs.SoftwareId = s.SOftwareId
                      );
person Gordon Linoff    schedule 24.03.2015