Sql 如何显示记录OrderID Null Null

Sql 如何显示记录OrderID Null Null,sql,oracle,Sql,Oracle,我有这个问题。 共有2张表格,第一张是: OrderID | OrderDetailID 1 | 1 1 | 2 第二种是: OrderDetailID | Quantity | Quality | Description NULL NULL NULL NULL 第二个表没有记录 如何编写Oracle或sql show记录,如下所示: OrderID | OrderDetailID | OrderDetailID |

我有这个问题。 共有2张表格,第一张是:

OrderID | OrderDetailID
1       | 1
1       | 2
第二种是:

OrderDetailID | Quantity | Quality | Description
NULL               NULL      NULL       NULL
第二个表没有记录 如何编写Oracle或sql show记录,如下所示:

OrderID | OrderDetailID | OrderDetailID | Quantity | Quality | Description
 1      | 1            | NULL          |     NULL |     NULL|      NULL

关键是我不能使用任何完整的外部联接,因为它将触发“无法选择从视图中使用group by、distinct等进行更新”

看起来您只是想将空列添加到
表1
的结果集中。如果是,只需:

select orderid, orderdetailsid, null as quantity, null as quality, null as description
from table1
或者,您的意图可能是一个
左连接

select t1.orderid, t1.orderdetailsid, t2.quantity, t3.quality, t2.description
from table1 t1
left join table2 t2 on t2.orderdetailsid = t1.orderdetailsid

在创建视图期间使用
外部联接
,例如

CREATE OR REPLACE VIEW v_t12 AS
SELECT t1.orderid, t1.orderdetailid AS orderdetailid1,
       t2.orderdetailid AS orderdetailid2, t2.quantity, t2.quality, t2.description
  FROM table2 t2
 RIGHT JOIN table1 t1
    ON t2.OrderDetailID = t1.OrderDetailID;

CREATE OR REPLACE VIEW v_t12 AS
SELECT t1.orderid, t1.orderdetailid AS orderdetailid1,
       t2.orderdetailid AS orderdetailid2, t2.quantity, t2.quality, t2.description
  FROM table1 t1
  LEFT JOIN table2 t2
    ON t2.OrderDetailID = t1.OrderDetailID;
然后,每当发出包含
FOR UPDATE
子句的查询时,您将得到
ORA-01445:Cannot Select ROWID from Join View without the Key Preserved Table
error,例如

SELECT *
  FROM v_t12 t
   FOR UPDATE  
然后将主键添加到第一个表中,例如

ALTER TABLE TABLE1
  ADD CONSTRAINT PK_ORD_ID_DET_ID PRIMARY KEY (ORDERDETAILID, ORDERID);
ALTER TABLE TABLE2
  ADD CONSTRAINT PK_ORD_DET_ID UNIQUE (ORDERDETAILID) 

然后将唯一键添加到第二个表中,例如

ALTER TABLE TABLE1
  ADD CONSTRAINT PK_ORD_ID_DET_ID PRIMARY KEY (ORDERDETAILID, ORDERID);
ALTER TABLE TABLE2
  ADD CONSTRAINT PK_ORD_DET_ID UNIQUE (ORDERDETAILID) 

为了避免错误。

SQL Server或Oracle?你到底在用什么?您部分引用的错误来自哪里?产生该错误的尝试是什么?无行与具有
NULL
值的单行之间存在差异。哪一个实际代表了数据?