2017-05-28 4 views
0

In Tabelle 1 meiner Datenbank ist eine Spalte namens Produkttitel, einige der Produkte haben den gleichen Namen. Sie haben jedoch unterschiedliche Preise.So füllen Sie eine Tabelle in SQL

Es gibt auch eine Spalte namens Produktversion. Dies könnte mit Verkaufspreis, Master-Einzelhandelspreis, Black Friday-Preis gefüllt werden.

Für alle Produkte, die nicht 'Master Retail Price' sind, muss ich die Master Retail Price-Produktnummer in die Spalte Hauptproduktnummer eingeben.

Also zum Beispiel: Wenn es drei Artikel namens Banana gibt, brauche ich diejenigen, die die Verkaufsversionen sind, um die Hauptproduktnummer in der Spalte Hauptproduktnummer zu haben.

Wenn die Produktversion 'Master-Einzelhandelspreis' lautet, sollte die Hauptproduktnummer für diese Zeile NULL sein.

Bis jetzt hat der Code ich alle Produktnummern aus Tabelle 1 in Tabelle 2 eingefügt. Wenn jemand hier helfen könnte, würde ich es sehr schätzen.

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

Sie sind ziemlich nah ... etwas mehr versuchen und verstehen – maSTAShuFu

+0

Sie verwenden nicht-Standard-SQL. Welches DBMS benutzt du? –

Antwort

0

OK, wir reproduzieren, was Sie

Für dieses Beispiel gesagt habe ich eine Oracle-Datenbank verwendet haben.

Wir haben Tabellent1 mit mal 4 Spalten sagen (diejenigen, die Sie erwähnt)

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

die Tabelle Bestücken mit einigen imaginären Werte

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'); 

Führen Sie eine einfache Wählen Sie die Daten, um zu sehen:

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 

Für alle die die Produk ts, die nicht 'Master Retail Price' sind, benötige ich , um die Master Retail Price-Produktnummer in die Main Product Number-Spalte einzutragen.

Hmmm ... Lassen Sie uns für diese Aufgabe in einem schönen Selbst verbinden, um eine korrelierte Unterabfrage verwenden:

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'; 

Verkaufspreis Jetzt beherrschen alle Produkte, die nicht sind, werden ihre Hauptproduktnummer bestückt sein mit der Master-Einzelhandelspreis-Produktnummer, wie Sie in der Auswahl unten sehen können.

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 

Ich hoffe, es hilft Ihnen.

+0

Vielen Dank GreenT, das hat funktioniert. Ich habe es gerade geschafft, meinen Code in den Griff zu bekommen und habe begonnen, dies mit einer größeren Datenmenge zu verwenden. Ein Fehler ist auf mich geworfen worden: "Die Anforderung für Prozedur T1 ist fehlgeschlagen, weil T1 ein Tabellenobjekt ist. Ich nehme an, dass Sie nicht schon einmal darauf gestoßen sind oder wissen, was es sein könnte? Vielen Dank nochmal – user20936

+0

@ user20936 I Ich bin froh zu wissen, dass es für Sie funktioniert hat, hier ist die Antwort auf Ihre Frage: https://stackoverflow.com/q/25270305/5063953 – GreenT

Verwandte Themen