2017-08-11 7 views
0

J'essaye de faire un simple LEFT JOIN d'une table dans couchbase. Voici ce que j'ai:comment faire LEFT JOIN dans N1QL couchbase?

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' 

mais pour une raison quelconque le résultat que je reçois n'inclut pas les champs de la table sur le côté droit. Quelqu'un peut-il m'aider à réaliser quelque chose de similaire à ce que nous pouvons faire dans la base de données relationnelle SQL comme ci-dessous?

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' 

merci!

Répondre

0

Si rien apparié côté droit de REJOIGNEZ projeté comme MANQUANT dans (NoSQL) JSON vs NULL dans SQL (il donne document côté gauche étendre côté droit DISPARITION)

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'; 

Si le document b est adapté et b.name est manquant, vous obtenez encore manquant. Si vous avez besoin de null, essayez ceci.

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';