2

この構造データがあるとします

data =[ 
 {
"id":1,
"link":[
        {
        "id":3
        },
        {
        "id":1
        },
        {
        "id":2
        }
        ]
},
{
"id":2,
"link":[
         {
          "id":30
          },
         {
         "id":11
         },
         {
         "id":22
         }
         ]

}
]

私の構造にリンクがあるかどうかを確認したいid=11

"SELECT * FROM ? WHERE link->[1]->id=11" 

動作しますが、インデックス 1 をチェックインする必要があることは既にわかっているためです。すべてのインデックスをチェックインするにはどうすればよいですか?

4

2 に答える 2

2

SEARCHそれが完全に実装されていれば、機能は良いでしょう

alasql('SEARCH / link / WHERE(id=11) .. / .. FROM ?',[data]);

ただし、親..セレクターはまだ実装されていません。

(完全にエレガントではない)ユーザー定義関数を実行することをお勧めします:

alasql.fn.deepSearch = function(id, obj){
    return alasql("SEARCH / link / WHERE(id=?) FROM ?", [id, [obj]]).length
}

alasql('SELECT * FROM ? WHERE deepSearch(11,_)',[data]);
于 2016-04-29T21:07:18.797 に答える
2

正しいコードは

alasql('SEARCH / AS @a link / WHERE(id=11) @a FROM ?',[data]);

ここでAS @aは、現在の要素を変数に保存@aし、2 番目@aはそれを取得します。

于 2016-08-22T10:35:37.087 に答える