Ich bin zwei Tabellen auf drei Felder beitreten. Das Problem, das ich habe, ist, dass ich eine Standardreihe von Tabelle b verwenden muss, wenn a.baz nicht in b.baz ist. Das Problem ist, einige haben eine Übereinstimmung in b, haben aber auch einen Standard und das verursacht ein Cross-Produkt, das ich nicht will.Verbinden mit Standardwerten, aber kein Cross-Produkt wollen
select a.foo, a.bar, a.baz, b.fee, b.fie
from a
join b
on a.foo = b.foo
and a.bar = b.bar
and ((a.baz = b.baz) or b.baz = 'DEFAULT')
Stromausgang:
foo bar baz fee fie
bob doe NYC 500 200
bob doe DEFUALT 100 100
john doe DEFAULT 100 100
jane doe NYC 500 500
gewünschten Ausgangs:
foo bar baz fee fie
bob doe NYC 500 200
john doe DEFAULT 100 100
jane doe NYC 500 500
Probendaten:
a: foo bar baz bob doe NYC john doe NYC jane doe NYC
b: foo bar baz fee fie bob doe NYC 500 200 bob doe DEFAULT 100 100 john doe CHI 300 200 john doe DEFAULT 100 100 jane doe NYC 500 100
können Sie einige Beispieldaten aus den Tabellen anzeigen? –
Einige Beispieldaten hinzugefügt. – SparkeyG
Das Ergebnis, das Sie erhalten, ist kein Cross-Produkt. Ich denke, Ihre aktuelle Ausgabe ist korrekt, mit den Bedingungen in Frage. –