我正在努力使用SQL查询从OrientDB中提取数据。
假设每个文件都包含每月不同日期每个人出勤的信息,我需要检查每个月的某一天有哪些人出现。
文件结构(出席):
{
"2017": {
"10": [
{
"day": "2",
"presence": "1"
},
{
"day": "3",
"presence": "1"
},
{
"day": "4",
"presence": "0"
},
{
"day": "5",
"presence": "1"
},
{
"day": "6",
"presence": "1"
},
{
"day": "9",
"presence": "0"
},
{
"day": "10",
"presence": "1"
},
{
"day": "11",
"presence": "1"
},
{
"day": "12",
"presence": "1"
},
{
"day": "13",
"presence": "1"
},
{
"day": "16",
"presence": 1
},
{
"day": "17",
"presence": "0"
},
{
"day": "18",
"presence": 1
},
{
"day": "19",
"presence": 1
},
{
"day": "20",
"presence": 1
},
{
"day": "23",
"presence": "1"
},
{
"day": "24",
"presence": "0"
},
{
"day": "25",
"presence": "1"
},
{
"day": "26",
"presence": "1"
},
{
"day": "27",
"presence": "0"
},
{
"day": "30",
"presence": "1"
},
{
"day": "31",
"presence": "1"
}
],
"09": [
{
"day": "1",
"presence": "0"
},
{
"day": "4",
"presence": "0"
},
{
"day": "5",
"presence": "0"
},
{
"day": "6",
"presence": "0"
},
{
"day": "7",
"presence": "1"
},
{
"day": "8",
"presence": "1"
},
{
"day": "11",
"presence": "1"
},
{
"day": "12",
"presence": "1"
},
{
"day": "13",
"presence": "1"
},
{
"day": "14",
"presence": "1"
},
{
"day": "15",
"presence": "0"
},
{
"day": "18",
"presence": "1"
},
{
"day": "19",
"presence": "1"
},
{
"day": "20",
"presence": "0"
},
{
"day": "21",
"presence": "1"
},
{
"day": "22",
"presence": "1"
},
{
"day": "25",
"presence": "1"
},
{
"day": "26",
"presence": "1"
},
{
"day": "27",
"presence": "0"
},
{
"day": "28",
"presence": "1"
},
{
"day": "29",
"presence": "1"
}
]
},
"person_id": "0f805072-d453-4321-8047-1f75bcb96451"
}
我想要的是:
“选择person_id,出席人数[2017] [10]当天= 31 和存在= 1“
但是我无法在orientDB中工作..
也许,由于某种原因数据结构很糟糕 - 请告知。
谢谢, 拉法尔
答案 0 :(得分:0)
试试这个:
select
person_id,
attendance["2017"]["10"][day = "31" AND presence = "1"] as presence
from attendance
UNWIND presence
请注意我引用2017,10,31和1,因为在你的模型中它们似乎是strigs,如果它们是数字你可以删除引号
答案 1 :(得分:0)
我明白了!
例如:
select person_id from attendance where 2017['10'] contains (day = 222 and presence=1)
这就是诀窍。
实际阅读文档有帮助:http://orientdb.com/docs/1.7.8/orientdb.wiki/SQL-Where.html
如果给定集合包含至少一个满足下一个条件的元素,则 contains
运算符可以匹配。就这么简单。