2017-05-28 100 views
0

在我的數據庫的表1中有一個名爲Product Title的列,其中一些產品具有相同的名稱。但是,他們有不同的價格。如何在SQL中填充表格

還有一個名爲Product Version的欄。這可以用銷售價格,主要零售價格,黑色星期五價格來填充。

對於所有不是「主要零售價格」的產品,我需要將主要零售價格產品編號填入主要產品編號欄。

例如:如果有三個名爲Banana的項目,我需要那些銷售版本在主要產品編號欄中具有主要產品編號的項目。

如果產品版本是'主要零售價格',那麼主要產品編號應爲該行的NULL。

到目前爲止,我已經將表1中的所有產品編號插入到表2中。如果有人可以幫助我,我將不勝感激。

Select [Table 1].[Product Title], [Table 1].[Product No] 

FROM [Table 1] 

INNER JOIN [Table 2] ON [Table1].[Product Title]=[Table 2].[Product Title] 

UPDATE [Table 1] 

SET [Table 1].[Main Product Number]=[Table1.[Product No] 

WHERE [Table 1].[Product Verison]='Master Retail Price'; 
+0

你已經非常接近...有點多嘗試和理解 – maSTAShuFu

+0

您正在使用非標準的SQL。你正在使用哪個DBMS? –

回答

0

OK,讓我們重現你所說

在這個例子中,我使用了Oracle數據庫。

我們有一個假設4列(你提到的那些)

create table t1( 
main_product_number int, 
product_number int, 
product_title varchar2(20), 
product_version varchar2(40)); 

填充一些虛數

insert into t1 values (NULL, 1,'Banana','Master Retail Price'); 
insert into t1 values (5, 2, 'Banana','Sale Price'); 
insert into t1 values (7, 3, 'Banana','Black Friday Price'); 

表做一個簡單的選擇看錶T1:

select * from t1; 

MAIN_PRODUCT_NUMBER PRODUCT_NUMBER PRODUCT_TITLE PRODUCT_VERSION 
-     1    Banana   Master Retail Price 
5     2    Banana   Sale Price 
7     3    Banana   Black Friday Price 

對於所有的produc的並非'主要零售價格',我需要 將主要零售價格產品編號填入主要 產品編號欄。

嗯......讓我們用一個相關子查詢此任務在一個美麗的自聯接:

update t1 a 
    set a.main_product_number=(select product_number 
           from t1 b 
           where a.product_title = b.product_title 
            and b.product_version='Master Retail Price' 
            and b.main_product_number is null 
          ) 
where a.product_version <> 'Master Retail Price'; 

現在一切都沒有掌握零售價格的產品,其主要產品數量將填充與主要零售價格產品編號一樣,如您在選擇波紋管中所看到的。

MAIN_PRODUCT_NUMBER PRODUCT_NUMBER PRODUCT_TITLE PRODUCT_VERSION 
-     1    Banana   Master Retail Price 
1     2    Banana   Sale Price 
1     3    Banana   Black Friday Price 

希望它可以幫助你。

+0

非常感謝GreenT,這工作。我剛剛設法讓你的代碼掌握了頭腦,並開始將這些用於大量的數據。我發現一個錯誤:「程序T1的請求失敗,因爲T1是一個表對象,我不認爲你之前遇到過這種情況,或者知道它可能是什麼?再次感謝 – user20936

+0

@ user20936 I很高興知道它對你有用,下面是對你的問題的迴應: https://stackoverflow.com/q/25270305/5063953 – GreenT