2015-03-24 4 views
0

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

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

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

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

ответ

0

Я думаю, что вы можете делать то, что лет хотят с 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 
        );