2017-04-13 2 views
0

Je suis novice à couchbase. Impossible de trouver en ligne ce que j'essaie d'atteindre. J'essaie d'utiliser la condition pour le type de document spécifique. Ma condition sera la suivante: si le type de document est 'type1', alors trouvez un identifiant spécifique dans ce document et un type de document 'type2' puis trouvez un autre identifiant dans ce type de document uniquement. Ma requête est comme ci-dessous -Conditions dans la clause WHERE dans Couchbase

SELECT DISTINCT appDetail.id, appDetail.group_id_record 
FROM default appDetail 
LEFT JOIN default users ON KEYS appDetail.id 
LEFT JOIN default groups ON KEYS ARRAY 'app_detail::' || TO_STRING(c) FOR c 
IN appDetail.group_id_record END 
WHERE (appDetail.type = 'user' OR appDetail.type = 'app_detail') 

Je suppose que j'ai besoin d'une condition supplémentaire dans JOIN peut être?

+2

Voir les expressions CASE conditionnelle expressions. – geraldss

Répondre

1

Utilisez le CASE conditional operator

SELECT DISTINCT CASE WHEN appDetail.type = 'user' THEN appDetail.id WHEN appDetail.type = 'app_detail' THEN appDetail.detailId END, appDetail.group_id_record 
FROM default appDetail 
LEFT JOIN default users ON KEYS appDetail.id 
LEFT JOIN default groups ON KEYS ARRAY 'app_detail::' || TO_STRING(c) FOR c 
IN appDetail.group_id_record END 
WHERE (appDetail.type = 'user' OR appDetail.type = 'app_detail') 

Attention Distinct dans votre requête parce que vous regroupez même identifiant bien que le type est différent (je ne pense pas que vous voulez que ce résultat)