2

タイトルは少し奇妙に聞こえますが、私がやろうとしていることは次のとおりです。テーブルを考えると

A.a  A.b         B.a  B.c  B.d
---  ---         ---  ---  ---
1    X           1    10   Z
2    Y           1    30   W

次のようなクエリが必要です。

SELECT A.a, B.d FROM A
some kind of JOIN B ON A.a = B.a
...WHERE A.a = :a AND B.c = :c

ここで、次の置換を行うと、これらの答えが得られます。

:a  :c       A.a  B.d
--  --       ---  ---
1   10  -->  1    Z
1   20  -->  1    NULL
2   any -->  empty set

私はMySQLを使用しているので、FULL JOINは問題外です。

解決しない

自分でそれを解決したと思った:

SELECT A.a, CASE WHEN B.c = :c THEN B.d ELSE NULL FROM A 
LEFT JOIN B ON A.a = B.a
WHERE A.a = :a AND B.c = :c

しかし、それは次のようになります:

:a  :c       A.a  B.d
--  --       ---  ---
1   20  -->  1    NULL
             1    10
4

1 に答える 1