Je suis nouveau sur l'API SQL. J'essaie d'écrire des requêtes pour des documents comme celui-ci:
{
"School" : "ABC Elementary"
"Grades" : [
{
"gradeLevel" : "First",
"subjects" : ["Drawing", "Music", "Numbers", "Words" ]
},
{
"gradeLevel" : "Second",
"subjects" : ["Art", "Music", "Numbers", "Phonetics" ]
}
]
}
un autre document pourrait être
{
"School" : "DEF Elementary"
"Grades" : [
{
"gradeLevel" : "First",
"subjects" : ["Drawing", "Music", "Numbers", "Words" ]
},
{
"gradeLevel" : "Second",
"subjects" : ["Arts & Crafts", "Music", "Numbers", "Phonetics", "PE" ]
}
]
}
J'essaie d'écrire une requête qui retournera des documents qui ont "PE" comme sujet (un seul dans l'exemple ci-dessus, le document scolaire "DEF Elementary") ou "Musique" (les deux documents scolaires dans l'exemple).
j'ai essayé
SELECT * FROM c
JOIN o IN o.Grades
WHERE "PE" IN o.subjects
mais cela ne renvoie aucun résultat. Je ne suis pas certain que cette requête soit possible à moins que chaque sujet soit également un objet:
"subjects" : [
{"name" : "Art"},
{"name" : "Music"}
]
Si l'API SQL n'est pas capable de renvoyer des résultats, cela pourrait-il être fait avec une procédure stockée et / ou UDF, tout en prenant en compte les limites des partitions?
1 réponse
Veuillez utiliser ci-dessous sql:
SELECT c.School,c.Grades FROM c
JOIN o IN c.Grades
WHERE ARRAY_CONTAINS(o.subjects,"PE",true)
Production:
[
{
"School": "DEF Elementary",
"Grades": [
{
"gradeLevel": "First",
"subjects": [
"Drawing",
"Music",
"Numbers",
"Words"
]
},
{
"gradeLevel": "Second",
"subjects": [
"Arts & Crafts",
"Music",
"Numbers",
"Phonetics",
"PE"
]
}
]
}
]
De nouvelles questions
arrays
Un tableau est une structure de données linéaire ordonnée constituée d'une collection d'éléments (valeurs, variables ou références), chacun identifié par un ou plusieurs index. Lorsque vous posez des questions sur des variantes spécifiques de tableaux, utilisez plutôt les balises associées: [vector], [arraylist], [matrix]. Lorsque vous utilisez cette balise, dans une question spécifique à un langage de programmation, identifiez la question avec le langage de programmation utilisé.