> 
> Well, if you’re going to apply SQL to JSON (say), then the first thing you 
> have to do is define a mapping from JSON to tables. That’s not difficult to 
> do.
> 
> If by the “closure property” you want the result of any SQL query to be the 
> representation of some JSON structure, then you’re not going to achieve that. 
> That’s essentially the same as the update problem.
> 
> 
> So pretty much no  subqueries (ok somebody is going to say that any query 
> entailing a subquery can be rewritten without one) but AFAIC  the language 
> you are talking about isn't really SQL then. 

I don’t follow. You can write any query you like; it’s just that the result is 
a table that might not be mappable back to JSON.

>> 
> 
> So I'm SOL if it's a date then. 

You won’t get any dates in the table representation of JSON, but you can get 
them in tables returned by a query.
>  
>> 
> 
> Forgive me if I'm wrong. But I still don't believe I can write a statement 
> that gets me the 5th row of the table.

Well, a typical representation of a JSON array [“a”, “b”, “c”] might be the 
table

ARRAYS
ID       INDEX    TYPE   VALUE
001     0             String   “a”
001     1             String   “b”
001     2             String   “c”

and the query to get item 2 of array 001 would be

SELECT TYPE, VALUE FROM ARRAYS WHERE ID=001 AND INDEX=2

As far as I understand it this is similar to the mapping that SQL Server uses 
for XML.

>  
> 
> How would you  predict a priori what your table and column names would be and 
> how many of them.

If you’ve got no schema then you have to use a generic mapping in which the 
table and column names are generic concepts such as ARRAY, MAP, etc.


> 
> 
> If you don't can't predict the schema your semi-structured is going to 
> generate then  how could you write your query. 

With difficulty. I can’t see anyone wanting to write it by hand.

Michael Kay
Saxonica
_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to