2016-12-11 27 views
1

Ich möchte eine SQL-Abfrage in eine JSONiq-Abfrage konvertieren, gibt es bereits eine Implementierung dafür, wenn nicht, was muss ich wissen, um ein Programm erstellen zu können, das dies tun kann?SQL-Abfrage an JSONiq Abfrage

+0

Was wissen Sie über JSONIQ? – McNets

+0

ab sofort, ich weiß nichts, ich weiß nur, es ist die XQuery für JSON-Dokumente – user203788

Antwort

1

Ich bin mir einer Implementierung nicht bewusst, aber es ist technisch machbar und einfach. JSONiq stammt zu 90% aus XQuery, das wiederum teilweise von SQL-Experten entwickelt wurde.

Von einem Datenmodell Perspektive wird eine Tabelle zu einer Sammelstelle und jede Reihe der Tabelle wird auf ein flaches JSON Objekt abgebildet abgebildet, dh alle Felder Atom Werte sind, etwa so:

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

dann Die Zuordnung erfolgt durch Umwandlung von SELECT-FROM-WHERE-Abfragen in FLWOR-Ausdrücke, die eine Obermenge der SQL-Funktionalität bereitstellen.

Zum Beispiel:

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

Kann abgebildet werden:

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

Kompliziertere Anfragen können auch ganz gerade nach vorne abgebildet werden:

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

zu:

es ist nur Kosmetik: 10

Eigentlich, wenn for hatte from und return hatte select genannt, und wenn diese Schlüsselwörter in Großbuchstaben geschrieben wurden, die Syntax von JSONiq wäre sehr ähnlich dem von SQL aufgerufen wurde.

+0

danke für die detaillierte Antwort, ich kann nicht Ihre Antwort jetzt wegen meiner Reputation upvote aber ich werde es tun, sobald ich kann , – user203788