Seems to also not work with INSERTs either. Not sure how to pull out the RID from the subquery, or any field for that matter. The nested query seems to return "[0]". What I would like to do is insert a Link to another document that already exists. Not sure if this is a bug or if there is another way. Using version 1.6.3 (downloaded from Git 12/27/13).
Tried something similar to your example in the "Sub-selects" section: https://github.com/orientechnologies/orientdb/wiki/SQL-Insert insert into Diver SET name = 'Luca', buddy = (select from Diver where name = 'Marko') Thanks! Giraldo On Monday, January 13, 2014 2:19:58 PM UTC-5, Giraldo Rosales wrote: > > Thanks for the quick response. It is throwing the following error: > > com.orientechnologies.orient.core.exception.OValidationException: The > field 'Zipcodes.state' has been declared as LINK but the value is not a > record or a record-id > > I switch the field from "Zipcodes.state" to "Zipcodes.state_tmp" to see > what was the output. It seems the output is "[0]". > > I also tried the following but none of them seemed to work: > UPDATE Zipcodes SET state=(SELECT @rid FROM States WHERE id= > *$parent.state_id*) > UPDATE Zipcodes SET state=(SELECT @rid FROM States WHERE > id=$parent.$record.state_id)*[0]* > UPDATE Zipcodes SET state=(SELECT @rid *AS rid* FROM States WHERE > id=$parent.$record.state_id)*.rid* > UPDATE Zipcodes SET state=(SELECT @rid *AS rid* FROM States WHERE > id=$parent.$record.state_id)*.result[0].rid* > UPDATE Zipcodes SET state=(SELECT @rid *AS state* FROM States WHERE > id=$parent.$record.state_id) > > On Monday, January 13, 2014 12:09:20 PM UTC-5, Lvc@ wrote: >> >> Hi, >> to get the upper level context variable you've to use $parent.record. >> Example: >> >> UPDATE Zipcodes SET state=(SELECT @rid FROM States WHERE >> id=$parent.$record.state_id); >> >> I never tried with UPDATE but should work. >> >> Lvc@ >> >> >> >> On 13 January 2014 18:00, Giraldo Rosales <[email protected]> wrote: >> >>> How do we nest queries? Trying to do an update. Have two types of >>> documents, zip codes and states. There are two fields in particular in the >>> zip code document: "state_id" (String) and "state" (Link). Would like to >>> add SELECT the "id" field in the state documents and insert the RID if it >>> matches. >>> >>> I would have thought something like: >>> UPDATE Zipcodes SET state=(SELECT @rid FROM States WHERE >>> id=Zipcodes.state_id); >>> >>> Where Zipcodes.state_id is a field in Zipcodes and would match the >>> field, States.id. It would then select the RID in States and insert it in >>> the ZIpcodes.state field (Link). >>> >>> In MySQL examples are here: >>> http://dev.mysql.com/doc/refman/5.0/en/subqueries.html >>> >>> How is this done in OrientDB? Saw something with the LET command but >>> doesn't seem to work with updates. >>> >>> Thanks! >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "OrientDB" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
