2009-03-10 16 views
0

Ich habe 2 Temp-Tabellen. Man hat Daten Spalte weise.Joining Temp Tabellen mit unterschiedlicher Struktur

OrderCode OrderType 
ABC   1000 

Man hat Datenreihe weise

FieldName Value 
ORDER_CODE ABC 
ORDER_TYPE 2000 

Ich brauche eine Abfrage zu schreiben, die von ihnen schließt sich im Wesentlichen beide und aktualisiert den Wert, wenn es in der Tabelle existiert 2.

Cord-Ergebnis muss sein

OrderCode OrderType 
ABC  2000 

Bearbeiten-

Bei 2 Bestellungen in Tabelle 1 mit dem gleichen Bestellcode:

OrderCode OrderType 
ABC   1000 
ABC  5000 

die Ergebnismenge benötigt

OrderCode OrderType 
    ABC   2000 
    ABC   2000 
+0

Wenn in der Tabelle2 zwei Reihenfolgen vorhanden sind, wie unterscheiden Sie sie? – Quassnoi

+0

Wenn in der ersten Tabelle zwei Aufträge vorhanden sind, muss ich sie ebenfalls aktualisieren. Bearbeitet als ex – DotnetDude

+0

Ok, aber in Tabelle2, wie unterscheiden Sie zwischen verschiedenen Bestellcodes? Wenn Sie zwei Bestellungen mit den Codes ABC und DEF haben, wie setzen Sie ORDER_CODE für sie in die zeilenweise Tabelle? – Quassnoi

Antwort

1

sein, um das Rowset zu wählen:

SELECT tt1.ordercode, tt2_type.Value 
FROM Table2 AS tt2_code 
JOIN Table1 tt1 
ON  tt1.orderCode = tt2_code.value 
JOIN 
     Table2 AS tt2_type 
ON  tt2_type.fieldName = 'ORDER_TYPE' 
WHERE tt2_code.fieldName = 'ORDER_CODE' 

zu Update Table1 basierend auf Werten von Table2:

WITH q AS 
    (
    SELECT tt1.ordercode, tt2_type.Value 
    FROM Table2 AS tt2_code 
    JOIN Table1 tt1 
    ON  tt1.orderCode = tt2_code.value 
    JOIN 
      Table2 AS tt2_type 
    ON  tt2_type.fieldName = 'ORDER_TYPE' 
    WHERE tt2_code.fieldName = 'ORDER_CODE' 
    ) 
UPDATE q 
SET oldvalue = newvalue 

Dies ist einer der Fälle, in denen JOIN -less Syntax besser lesbar ist.

+0

In der FROM-Klausel, was ist TT2? – DotnetDude

+0

Ich denke, dass sollte Table2 –

+0

Cool sein, wird diese Abfrage im zweiten Szenario funktionieren (Pls siehe Bearbeiten) – DotnetDude