2017-08-11 1 views
0

私はcouchbaseでテーブルの簡単なLEFT JOINを実行しようとしています。ここで私が持っているものです。N1QL couchbaseでLEFT JOINを実行する方法は?

SELECT 
    a.*, 
    b.id, 
    b.name 
    FROM my_table AS a LEFT JOIN my_table AS b 
    ON KEYS a.pid 
    WHERE a.id='abc' 

が、私が得る結果は、右側のテーブルのフィールドを含むされていない何らかの理由で。私は以下のようなリレーショナルデータベースSQLでできることに似た何かを達成するために誰も助けてくれますか?

SELECT 
    a.*, 
    b.id, 
    b.name 
    FROM my_table AS a LEFT JOIN my_table AS b 
    ON a.pid=b.id 
    WHERE a.id='abc' 

ありがとうございました!

答えて

0

何もSQLでNULL VS(NOSQL)JSONでMISSINGとして投影JOINの右側に一致しない場合(すなわち、それは左サイドの文書はMISSINGとして右側を拡張できます)

SELECT 
    a.*, 
    (CASE WHEN b IS MISSING THEN NULL ELSE b.id END) AS id, 
    (CASE WHEN b IS MISSING THEN NULL ELSE b.name END) AS name 
    FROM my_table AS a LEFT JOIN my_table AS b 
    ON KEYS a.pid 
    WHERE a.id='abc'; 

文書Bが一致した場合と、 b.nameはあなたがまだMISSINGになりません。 nullが必要な場合はこれを試してください。

SELECT 
    a.*, 
    (CASE WHEN b.id IS MISSING THEN NULL ELSE b.id END) AS id, 
    (CASE WHEN b.name IS MISSING THEN NULL ELSE b.name END) AS name 
    FROM my_table AS a LEFT JOIN my_table AS b 
    ON KEYS a.pid 
    WHERE a.id='abc'; 

SELECT 
a.*, 
IFMISSING(b.id,NULL) AS id, 
IFMISSING(b.name,NULL) AS name 
FROM my_table AS a LEFT JOIN my_table AS b 
ON KEYS a.pid 
WHERE a.id='abc'; 
関連する問題