Alasql выберите в массиве массива с неизвестным индексом

Предположим, у меня есть данные этой структуры

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. Как я могу проверить все индексы?

2 ответа

Решение

SEARCH функция была бы хороша, если бы она была полностью реализована

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

Но у parrent .. селектор еще не реализован.

Я предлагаю сделать (не совсем элегантную) пользовательскую функцию:

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

alasql('SELECT * FROM ? WHERE deepSearch(11,_)',[data]);

Правильный код

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

Вот AS @a сохраняет текущий элемент в переменную @aи второй @a получает это.

Другие вопросы по тегам