テーブルをそれ自体に結合する方法を覚えていません。私のテーブルは次のとおりです。
| id | proc | value | kind |
| 1 | 1 | foo | a |
| 2 | 1 | bar | b |
| 3 | 2 | some | a |
そして、procが$ procで、kindが'a'と'b'の両方である値colを取得する必要があります。まあ、それを行う必要があります(proc = 1を探します):
| v_a | v_b |
| foo | bar |
だから私はこのクエリを書きました:
SELECT
a.value AS v_a,
b.value AS v_b
FROM
(SELECT value FROM table WHERE proc = '1' AND kind = 'a') AS a,
(SELECT value FROM table WHERE proc = '1' AND kind = 'b') AS b
そして動作しますが、テーブルにkind=aとkind=bの両方の行がある場合に限ります。
しかし、行を見逃した場合はnull値になる必要があります。proc= 2を探す場合は、次を取得する必要があります。
| v_a | v_b |
| foo | NULL|
代わりに、私のクエリでは、bまたは行が欠落している場合は何も取得しません。
私はmysqlを使用しています...それを行う方法は?
編集: UNION句を使用することはできますが、これでは、1つの行が欠落している場合(kind=aまたはkind=b)にNULL値を指定できません。