2016-10-07 1 views
0

Je veux copier le @rid de Table2 dans un champ "r1" de Table1, où Table2.f1 = Table1.f2 (f1 & f2 juste deux autres champs).OrientDB SQL - Mise à jour avec sous-requête

La seule solution que je suis venu avec est la suivante:

UPDATE Table1 SET r1=(SELECT @rid FROM Table2 
WHERE Table2.f1=$parent.$current.f2) 

Mais il retourne une chaîne avec la liste complète/valeur du champ. donc je dois le couper comme suit:

UPDATE Table1 SET r1=r1.substring(6,12) 

(pour garder seulement la partie @rid)

Mais il me semble qu'il doit y avoir une meilleure/solution plus élégante, avec un seul question.

Existe-t-il un moyen d'extraire uniquement le @rid de la liste de champs ci-dessus? J'ai également essayé Omega Silva's solution, ce qui ne semble pas fonctionner. This is the error I get.

Des idées?

Répondre

0

Je ne sais pas si je comprends bien, mais j'ai essayé avec ce petit exemple

enter image description here

et

UPDATE Table1 SET r1=(SELECT @rid FROM Table2 WHERE f1=$parent.$current.f2) 

Je suis

enter image description here

Espoir ça aide.

+0

Apparemment, vous avez fait exactement ce que j'ai fait. Mais le résultat n'est pas le même. -je obtenir une liste des champs comme celui-ci (mon exemple est avec détection vidéo que je reçois d'un MongoDB): [Vidéo # 28: 16 {Mongo_ID: 5714c50f142d7d2cf7c100fb, EG_ID: Video_5714c50f142dc100fb, W: 576,0, H: 704,0, Cadres: 45061 , Label: Video, VideoID: d8637219a389a77bbb65194a} v2] Le résultat obtenu semble être en accord avec ce qu'Omega Silva a écrit, à savoir que «la sous-requête (la requête select) renvoie toujours une collection». Toujours confus, parce que j'ai déjà essayé cela. Merci quand même! – ChrisB

+0

Oui, la sous-requête (la requête select) renvoie toujours une collection. –