簡単な答えは見つかりません。私のクエリは間違った結果を吐き出しています。これは、「AND」が実際の結合として認識されていないためだと思います。
あなたはこのようなことをすることができますか、そうでない場合、正しいアプローチは何ですか:
SELECT * from X
LEFT JOIN Y
ON
y.date = x.date AND y.code = x.code
?
簡単な答えは見つかりません。私のクエリは間違った結果を吐き出しています。これは、「AND」が実際の結合として認識されていないためだと思います。
あなたはこのようなことをすることができますか、そうでない場合、正しいアプローチは何ですか:
SELECT * from X
LEFT JOIN Y
ON
y.date = x.date AND y.code = x.code
?
これは可能です:
ON 句は、最も一般的な種類の結合条件です。WHERE 句で使用されるのと同じ種類のブール値式を取ります。T1 と T2 の行のペアは、ON 式が true と評価された場合に一致します。
http://www.postgresql.org/docs/9.1/static/queries-table-expressions.html#QUERIES-FROM
あなたのSQLは問題ないようです。
大丈夫だよ。実際、キー列やテーブルにまったく関係のないものであっても、ON 句に任意の条件を入れることができます。たとえば、次のようになります。
SELECT * from X
LEFT JOIN Y
ON y.date = x.date
AND y.code = x.code
AND EXTRACT (dow from current_date) = 1