On 07/19/2015 02:07 PM, Todd Roth wrote:
Thank you! The SQL function was the missing piece. I had tried sql_nullable without the SQL call but was getting an “Unbound structure” error.
Yeah, the [SQL] below isn't a call. It's more of a syntax macro built into the compiler frontend, which causes a span of code to be parsed as an SQL expression, rather than an Ur expression. The same effect could be achieved more verbosely with calls to the underlying combinators.
On Jul 19, 2015, at 9:40 AM, Adam Chlipala <[email protected]> wrote: On 07/19/2015 07:20 AM, Todd Roth wrote:Another newbie question… How do you check for equality between optional and non-optional columns in different tables when doing join queries? The following exampleQ query does not compile. I get the errors shown in [1] table table2 : { Id : int, SomeVal : string} PRIMARY KEY Id table table1 : { Id : int, Table2Val : option int } PRIMARY KEY Id, CONSTRAINT Table2Val FOREIGN KEY Table2Val REFERENCES table2(Id) fun exampleQ () = queryL (SELECT * FROM table1 LEFT JOIN table2 ON table1.Table2Val = table2.Id)Here's the simple fix: fun exampleQ () = queryL (SELECT * FROM table1 LEFT JOIN table2 ON table1.Table2Val = {sql_nullable (SQL table2.Id)})
_______________________________________________ Ur mailing list [email protected] http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
