2013-07-04 6 views
17

Ich kann keine einfache Antwort finden. Meine Abfrage spuckt das falsche Ergebnis aus, und ich denke, es liegt daran, dass das "UND" nicht als tatsächlicher Join angezeigt wird.Postgres-Tabelle auf zwei Spalten beitreten?

Können Sie etwas tun und wenn nicht, was ist der richtige Ansatz:

SELECT * from X 
LEFT JOIN Y 
ON 
    y.date = x.date AND y.code = x.code 

?

+1

Was die erwartet wird, sind die tatsächlichen Ergebnisse? –

+2

Die Syntax ist korrekt - sonst erhalten Sie eine Fehlermeldung. Ihre Beschreibung "falsche Ergebnisse spucken" sagt uns jedoch nichts über Ihr Problem. Sie müssen uns einige Beispieldaten und die erwartete Ausgabe zeigen. Im Idealfall erstellen Sie ein kleines Beispiel auf http://sqlfiddle.com –

Antwort

14

Es ist in Ordnung. In der Tat können Sie jede Bedingung in der ON-Klausel setzen, auch eine nicht auf die Schlüsselspalten verwendet oder sogar die Tabellen überhaupt, zB:

SELECT * from X 
LEFT JOIN Y 
    ON y.date = x.date 
    AND y.code = x.code 
    AND EXTRACT (dow from current_date) = 1 
Verwandte Themen