2016-04-25 3 views
0

Für die folgenden Tabellen;SQL fügt Zeilen übereinander hinzu und nicht beiseite

PRICE_TABLE    FACT_TABLE 
P_ID     P_ID 
1      0  
2      0 
3      0 
...      .... 

Ich versuche, die Werte von PRICE_TABLEP_ID in die FACT_TABLE zu bekommen. Ich bin mit der folgenden Abfrage gegangen;

INSERT INTO FACT_TABLE(P_ID) SELECT P_ID FROM PRICE_TABLE 

Ich habe mehrere weitere ähnliche Felder in der FACT_TABLE entsprechend anderen Tabellen, dh. SALES_TABLE von denen die S_ID in der gleichen Weise kommen müsste.

Allerdings laufen die Abfragen so;

INSERT INTO FACT_TABLE(P_ID) SELECT P_ID FROM PRICE_TABLE 

INSERT INTO FACT_TABLE(S_ID) SELECT S_ID FROM SALES_TABLE 

Wird die zweite INSERT Aussage auf dem anderen hinzufügen, so dass nur die zweite IDs beginnen, wenn der erste Satz beendet hat.

z.

FACT_TABLE 
P_ID  S_ID 
1  NULL 
2  NULL 
3  NULL 
NULL  1 
NULL  2 
NULL  3 
...  ... 

Wer hat irgendwelche Vorschläge?

+1

nur zu stützen, wie die Reihen wissen soll, welche mit dem geht? Die SQL-Tabelle hat keine inhärente Reihenfolge. – Paparazzi

+1

INSERT-Anweisungen fügen immer neue Zeilen hinzu. Ich bin nicht sicher von der obigen Beschreibung, was Ihr erwartetes Verhalten ist, aber wenn Sie die erste Menge der mit den P_IDs erzeugten Zeilen aktualisieren wollten, um auch S_IDs zu haben, dann müssen Sie UPDATE-Anweisungen verwenden, um vorhandene Zeilen zu aktualisieren neue hinzufügen? – PulseLab

+0

Gibt es eine Beziehung zwischen 'PRICE_TABLE' und' SALES_TABLE'? –

Antwort

0

Sie führen zwei separate Einsätze. Der erste wird ausgeführt und füllt P_ID und der zweite wird ausgeführt und füllt S_ID. Sie möchten die beiden Einsätze zu einem kombinieren.


INSERT INTO FACT_TABLE (P_ID, S_ID) 
VALUES (pt.P_ID, st.S_ID) 
FROM PRICE_TABLE pt 
INNER JOIN SALES_TABLE st 
on st.P_ID = pt.P_ID 

Das Obige wird unter der Annahme, PRICE_TABLE SALES_TABLE und haben eine gemeinsame Spalte (in diesem Fall P_ID). Wenn dies nicht der Fall ist, müssen Sie mehr Informationen darüber geben, was Sie erreichen möchten (wollen Sie jede P_ID für jede S_ID, wollen Sie nur, wenn P_ID = S_ID, usw.).

+0

Es gibt keine Beziehung zwischen 'PRICE' und' SALES', jede hat ihre eigenen eindeutigen IDs, die ich in die Tabelle 'FACT' zu ziehen versuche, die derzeit leer ist, aber ich beabsichtige, sie mit besagten IDs aus den Tabellen zu füllen. – eggman

1

Wenn Sie sie alle
Sie wollen nicht zuordnen, wenn es nichts ist, den Verein auf

INSERT INTO FACT_TABLE (P_ID, S_ID) 
SELECT P_ID, S_ID 
FROM  PRICE_TABLE 
CROSS JOIN SALES_TABLE 
Verwandte Themen