从多个不可连接的表中插入数据

| 我在Oracle 9i数据库中有3个表。 A与B联接,B与C联接。A&C没有任何联接。我正在尝试使用A和C的值将行插入B中。我从这里开始:
INSERT INTO b
(value1, 
value2, 
value3, 
value4)
(SELECT 
a.value1,
a.value2,
c.value3, 
c.value4
FROM a, c 
WHERE a.column1 = x  
AND c.column2 = y)
但是由于表a和c之间没有连接,因此插入的行比我期望的要多得多。有没有办法拆分两个select语句以从a表中获取某些值,并从c标准中获取其他值?如果是这样,语法是什么?
已邀请:
由于A和C之间没有关系,因此联接基本上是笛卡尔联接。 您添加的任何条件将特定于您的要求。如果您可以从表中发布一些数据,将有助于您了解案例。 假设您有2个表格Student(具有10行)和Classes(具有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;

要回复问题请先登录注册