2016-12-11 8 views
1

SQLクエリをJSONiqクエリに変換したいのですが、これが既に実装されていますか?そうでない場合は、これを行うプログラムを作成するために何を知る必要がありますか?JSONiqクエリへのSQLクエリ

+0

JSONIQについて、あなたは何を知っていますか? – McNets

+0

現在のところ、私は何も知らない、私はそれがJSON文書のXQueryであることを知っている。 – user203788

答えて

1

私は実装を認識していませんが、技術的に実現可能で簡単です。 JSONiqはXQueryに由来するDNAの90%を持っています。それ自体はSQLに関わる人々によって部分的に設計されています。データ・モデルの観点から

、テーブルはテーブルの集合とそれぞれの行にマッピングされ、フラットJSONオブジェクトにマッピングされ、すなわち、すべてのフィールドはそうのような原子値である:そして

{ 
    "Name" : "Turing", 
    "First" : "Alan", 
    "Job" : "Inventor" 
} 

このマッピングは、SELECT-FROM-WHEREクエリをSQLの機能のスーパーセットを提供するFLWOR式に変換することによって行われます。例えば

より複雑なクエリはまた、非常にストレート前方にマッピングすることができ

for $person in collection("people") 
where $person.job eq "Inventor" 
return project($person, ("Name", "First")) 

SELECT Name, COUNT(*) 
FROM people 
WHERE Job = "Inventor" 
GROUP BY Name 
HAVING COUNT(*) >= 2 

へ:

SELECT Name, First 
FROM people 
WHERE Job = "Inventor" 

がにマッピングすることができます

for $person in collection("people") 
where $person.job eq "Inventor" 
group by $name := $person.name 
where count($person) ge 2 
return { 
    name: $name, 
    count: count($person) 
} 

実は、for場合fromと呼ばれていたとreturnselectと呼ばれていた、とこれらのキーワードは大文字を書かれていた場合、JSONiqの構文はSQLのものと非常に類似し、次のようになります。それが唯一の化粧品です。

+0

詳細な回答をいただきありがとうございます。私の評判のためにあなたの回答を今アップすることはできませんが、 、 – user203788