Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将三个表中的值插入空表_Sql_Db2 - Fatal编程技术网

Sql 将三个表中的值插入空表

Sql 将三个表中的值插入空表,sql,db2,Sql,Db2,我需要根据id和订单id从表1、表2、表3中选择FirstName、LastName、交货日期、订单id、总价,并将其放入表4 表1 id FirstName LastName ------------------------- 1 mr.xxxx xxx 2 mr.ssss sss 3 mr.yyyy yyy 表2 order_id deliver_date id tracking_number --------

我需要根据id和订单id从表1、表2、表3中选择FirstName、LastName、交货日期、订单id、总价,并将其放入表4

表1

id   FirstName   LastName   
-------------------------
1    mr.xxxx     xxx   
2    mr.ssss     sss   
3    mr.yyyy     yyy
表2

order_id  deliver_date  id  tracking_number   
----------------------------------------------
    01    10/01/2017     1         1   
    02    10/01/2017     2         2   
    03    10/01/2017     3         3    
表3

order_id   total_price      item qty   
-----------------------------------------------
   01      some price xx    some quantity xx   
   02      some price xx    some quantity xx   
   03      some price xx    some quantity xx  
表4

FirstName, LastName, deliver_date, order_id, total_price
我试着这样做:

INSERT INTO RECEIPT (CUST_FNAME, CUST_LNAME, CUST_EMAIL, CUST_MOBILE, CUST_ADDRESS, CUST_CITY, CUST_STATE, CUST_POSTCODE, DELIVERY_DATE, TOTAL_PRICE, CUST_ID, ORDER_ID) 
VALUES (SELECT CUSTOMER.CUST_FNAME, CUSTOMER.CUST_LNAME, CUSTOMER.CUST_EMAIL, CUSTOMER.CUST_MOBILE, CUSTOMER.CUST_ADDRESS, CUSTOMER.CUST_CITY, CUSTOMER.CUST_STATE, CUSTOMER.CUST_POSTCODE , ORDERS.DELIVERY_DATE, "ORDER DETAIL".TOTAL_PRICE, ORDERS.CUST_ID, ORDERS.ORDER_ID FROM CUSTOMER, ORDERS, "ORDER DETAIL" WHERE CUSTOMER.CUST_ID = ORDERS.CUST_ID AND ORDERS.ORDER_ID = "ORDER DETAIL".ORDER_ID)
但我有一个错误:

SQL0412N从只允许一列的子查询返回多个列。SQLSTATE=42823

在从另一个表中选择数据时使用INSERT语句时,需要省略VALUES关键字

所以,应该是这样

   INSERT INTO <TABLE_NAME>(col1, col2...)
     SELECT col1, col2...

另外,请确保在相同的序列中有相同数量的列,否则,您将插入错误的值,或者由于数据类型不匹配,您的查询将抛出错误

您在…VALUES SELECT CUSTOMER.CUST\u FNAME中有错误。。。在要插入的第一列中,此子查询可能有多行

您必须调整此查询以仅返回一行或多个筛选器

无论如何,将值备份到另一个新表的另一个表单是从新表中选择精确的列,并将此查询保存到.csv文件中

例如:

CREATE TABLE new_table
(
    id SERIAL NOT NULL,
    FirstName VARCHAR,
    LastName VARCHAR

   ....
);

SELECT table1.FirstName, table2.LastName, ...  
FROM table1 
INNER JOIN ....
-如果允许DB引擎保存到csv,则必须将此查询保存到csv文件中

文件准备好后,必须再次加载到新表中。

请尝试以下操作:

insert into table4 (FirstName, LastName, deliver_date, order_id, total_price)
select f1.FirstName, f1.LastName, f2.deliver_date, f2.order_id, f3.total_price 
from table1 f1
inner join table2 f2 on f1.id=f2.id 
inner join table3 f3 on f2.order_id=f3.order_id

@夸齐塔里克,请读。您还可以看到向上箭头。您需要单击该选项以进行向上投票。旁注:请停止使用隐式连接逗号分隔从句,并切换到显式指定连接,在ON中使用尽可能多的相关条件。