Javascript AlaSQL嵌套数组

Javascript AlaSQL嵌套数组,javascript,json,alasql,Javascript,Json,Alasql,我正在尝试在数组中使用AlaSQL agregator,它似乎不受支持:( 正在尝试完成此输出(或类似于此): 我的数据库结构 people e | name | type | |-----------|---------| | name | varchar | | lastname | varchar | | person_id | varchar | | cel | int | projects p | name | type

我正在尝试在数组中使用AlaSQL agregator,它似乎不受支持:(

正在尝试完成此输出(或类似于此):

我的数据库结构

people e
| name      | type    |
|-----------|---------|
| name      | varchar |
| lastname  | varchar |
| person_id | varchar |
| cel       | int     |

projects p
| name        | type    |
|-------------|---------|
| keyword     | varchar |
| year        | int     |
| description | text    |
| budget      | int     |

PeopleProjects x
| name        | type    |
|-------------|---------|
| e_person_id | varchar |
| p_keyword   | varchar |
| p_year      | int     |
| status      | varchar |

metadata m
| name        | type    |
|-------------|---------|
| e_person_id | varchar |
| p_keyword   | varchar |
| p_year      | int     |
| key         | varchar |
| value       | varchar |
我的问题

alasql("SELECT p.keyword, \
ARRAY({year:p.year, description:p.description, budget:p.budget, status:x.status, \
    ARRAY({key:m.key, value:m.value}) as metadata \
}) AS projects \
FROM projects p, PeopleProjects x, metadata m \
WHERE \
    p.keyword = x.p_keyword AND x.p_keyword = m.p_keyword AND \
    p.year = x.p_year AND x.p_year = m.p_year \
    x.e_person_id = x.e_person_id AND AND x.e_person_id = 2 \
GROUP BY p.keyword");
目前,我将查询一分为二,然后结合数据生成洞


有什么想法吗?

我通过两次抓取来获得我想要的输出:

第一,项目:

var projects=alasql(“选择p.keyword,数组({status:x.status,year:p.year,description:p.description,budget:p.budget})作为年份\
来自PeopleX项目,p项目\
其中x.p_关键字=p.keyword,x.p_年份=p.year,x.e_person_id=“+person_id+”\
按p.keyword)分组;
第二,元数据:

var mdata = alasql("SELECT m.e_person_id, m.p_keyword, m.p_year, ARRAY({key:m.key,value:m.value}) as [metadata] \
FROM metadata m, PeopleProjects x \
WHERE x.e_person_id = m.e_person_id AND x.p_keyword = m.p_keyword AND x.p_year = m.p_year AND x.e_person_id = "+person_id+" \
GROUP BY m.e_person_id, m.p_keyword, m.p_year");
for(i=0;i<projects.length;i++){
    for(j=0;j<projects[i].years.length;j++){
        current = projects[i].keyword;
        current_year = projects[i].years[0].year;
        search = alasql("SEARCH / * WHERE(year="+current_year+" AND keyword='"+current+"') FROM ?",[mdata]);

        projects[i].years[j]["metadata"] = search[0].metadata;
    }
}
然后,循环项目,搜索和存储元数据:

var mdata = alasql("SELECT m.e_person_id, m.p_keyword, m.p_year, ARRAY({key:m.key,value:m.value}) as [metadata] \
FROM metadata m, PeopleProjects x \
WHERE x.e_person_id = m.e_person_id AND x.p_keyword = m.p_keyword AND x.p_year = m.p_year AND x.e_person_id = "+person_id+" \
GROUP BY m.e_person_id, m.p_keyword, m.p_year");
for(i=0;i<projects.length;i++){
    for(j=0;j<projects[i].years.length;j++){
        current = projects[i].keyword;
        current_year = projects[i].years[0].year;
        search = alasql("SEARCH / * WHERE(year="+current_year+" AND keyword='"+current+"') FROM ?",[mdata]);

        projects[i].years[j]["metadata"] = search[0].metadata;
    }
}

for(i=0;i我通过两次抓取获得了想要的输出:

第一,项目:

var projects=alasql(“选择p.keyword,数组({status:x.status,year:p.year,description:p.description,budget:p.budget})作为年份\
来自PeopleX项目,p项目\
其中x.p_关键字=p.keyword,x.p_年份=p.year,x.e_person_id=“+person_id+”\
按p.keyword)分组;
第二,元数据:

var mdata = alasql("SELECT m.e_person_id, m.p_keyword, m.p_year, ARRAY({key:m.key,value:m.value}) as [metadata] \
FROM metadata m, PeopleProjects x \
WHERE x.e_person_id = m.e_person_id AND x.p_keyword = m.p_keyword AND x.p_year = m.p_year AND x.e_person_id = "+person_id+" \
GROUP BY m.e_person_id, m.p_keyword, m.p_year");
for(i=0;i<projects.length;i++){
    for(j=0;j<projects[i].years.length;j++){
        current = projects[i].keyword;
        current_year = projects[i].years[0].year;
        search = alasql("SEARCH / * WHERE(year="+current_year+" AND keyword='"+current+"') FROM ?",[mdata]);

        projects[i].years[j]["metadata"] = search[0].metadata;
    }
}
然后,循环项目,搜索和存储元数据:

var mdata = alasql("SELECT m.e_person_id, m.p_keyword, m.p_year, ARRAY({key:m.key,value:m.value}) as [metadata] \
FROM metadata m, PeopleProjects x \
WHERE x.e_person_id = m.e_person_id AND x.p_keyword = m.p_keyword AND x.p_year = m.p_year AND x.e_person_id = "+person_id+" \
GROUP BY m.e_person_id, m.p_keyword, m.p_year");
for(i=0;i<projects.length;i++){
    for(j=0;j<projects[i].years.length;j++){
        current = projects[i].keyword;
        current_year = projects[i].years[0].year;
        search = alasql("SEARCH / * WHERE(year="+current_year+" AND keyword='"+current+"') FROM ?",[mdata]);

        projects[i].years[j]["metadata"] = search[0].metadata;
    }
}
(i=0;i)的