2017-04-10 16 views
0

为了执行此操作(在标题描述中),显然它已经是规范化数据库,因此内部联接类型的检查将被肯定使用。如果列值id与另一个表(标准化表格)中ID的描述相匹配,则在指定列中插入数据

比方说,我们有一个客户表和一个给定的customer_ID作为主键,以及描述名字姓氏等,并在另一个表(Customer_Sales_History)Customer_ID列也是为了使其能够以查询方式进行搜索。

更新: 我奋斗的是,我需要通过CUSTOMER_NAME & Customer_Lastname检查,以增加在特定的列中的XML(SOAP响应)格式的收购,但附加到特定CUSTOMER_IDS具体数据。

如果CUSTOMER_NAME =“约翰”和Customer_Lastname =“马丁”然后填充salescode产品数量和产品描述与价值观

体积大(数千行),以便SQL可能需要填充从插入另一张桌子,即时通讯这种类型的清凉卷。

  Customer Table 
Customer_ID | Customer_Name | Customer_Lastname 
1   | John   | Martin 
2   | Jack   | White 
3   | Don   | Carrera 

    Customer_Sales_History Table 

Customer_ID | Sales_Code | ProductQuantity | ProductDescription 
2   |  X  |  X  |   X 

为了与CUSTOMER_ID 2作为给定目标我必须在一行CUSTOMER_NAME =杰克和Customer_Lastname =白色和填充Sales_Code Product_Quantity &产品说明匹配插入给定的数据Customer_Sales_History表。

+0

那么这个“XML格式”应该如何呢?你需要哪些信息?你真的需要插入数据还是想在历史表中更新_update_现有的行? sales_code,productquantity和productdescription的值来自哪里?您的客户表似乎并没有这个功能。 –

+0

这是一个SOAP响应所以它像 杰克 <产品数量> 2 <产品描述> SQL HOW TO傻瓜的事情也就是这样的回应像45.000 others ..所以即时尝试做的是创建一个SQL语句,所以我不必手动做...除此之外,我可以用Navicat做。 1行不需要SQL代码。 – adtoctor

+0

对不起,我不明白。为什么不能使用简单的'insert into customer_sales_history(...)values(...)'? –

回答

1
Update ch 
set ch.sales_code = ..., 
    ch. ProductQuantity =..., 
from Customer_Sales_History ch join Customer c on ch. Customer_ID= c.Customer_ID 
where ch.Customer_ID=2 
+0

做**不**在UPDATE语句的'from'子句中指定目标表,除非您想要该表与其自身的交叉连接。 –

+0

你的意思是?你能写下来吗? – Mehr

+0

它已经写在手册中:https://www.postgresql.org/docs/current/static/sql-update。html(参见'from_list'部分) –

0

如果您已将客户表中的customer_ID声明为Customer_Sales_History表中的主键和customer_ID作为外键,则它将自动执行检查部分。 那么,为什么你需要明确地检查customer_id?

+0

因为我给出的数据不知道数据库格式,所以他们只是给出客户的描述,例如Jack White是我必须在行中匹配才能插入的描述新的数据。 – adtoctor

相关问题