2016-03-12 2 views
1

У меня есть json-объект, как показано ниже.Alasql - запрос вложенных объектов в json

Ebay Объект

{ 
    __v: 0 
    _id: "56e192f0aea7131c15513328" 
    headquarters: "New York" 
    name: "Ebay" 
    productCategories: [{ 
     _id: "56e193beaea7131c1551332d" 
     name: "Footwear" 
     products: [{ 
      name: 'Shiela', 
      price: 420, 
      totalSales: [10, 20] 
     }, { 
      name: 'Parry', 
      price: 350, 
      totalSales: [50, 20] 
     }] 
     totalSales: 100 
    }, { 
     1: Object 
     _id: "56e193beaea7131c1551332e" 
     name: "Clothes" 
     products: [{ 
      name: 'Kurta', 
      price: 210, 
      totalSales: [60, 80] 
     }, { 
      name: 'Sun Glass', 
      price: 785, 
      totalSales: [5, 25] 
     }], 
     totalSales: 170 
    }] 
} 

Amazon Объект

{ 
     __v: 0 
     _id: "56e192f0aea7131c15513328" 
     headquarters: "New York" 
     name: "Amazon" 
     productCategories: [{ 
      _id: "56e193beaea7131c1551332d" 
      name: "Footwear" 
      products: [{ 
       name: 'Shiela', 
       price: 280, 
       totalSales: [10, 20] 
      }, { 
       name: 'Parry', 
       price: 785, 
       totalSales: [50, 20] 
      }] 
      totalSales: 100 
     }, { 
      1: Object 
      _id: "56e193beaea7131c1551332e" 
      name: "Clothes" 
      products: [{ 
       name: 'Kurta', 
       price: 150, 
       totalSales: [60, 80] 
      }, { 
       name: 'Sun Glass', 
       price: 485, 
       totalSales: [5, 25] 
      }], 
      totalSales: 170 
     }] 
    } 

Я хочу, чтобы выбрать имя каждого внутри категории продуктов, которые являются общими для обеих компаний.

Затем я хочу выбрать продукты, которые являются общими для общих категорий товаров.

Тогда я хочу, чтобы получить цену общих продуктов (для обеих компаний) для сравнения

Я могу запустить ниже запрос

alasql('SELECT products FROM ? AS CATEGORY1 JOIN ? AS CATEGORY2 USING [0]', [$scope.company1.productCategories, $scope.company2.productCategories], function(data) { 
        console.log("join query executed"); 
        console.log(data); 
       }); 

Я хочу найти продукты внутри каждого категория продукта. Я хочу получить такой запрос, как

alasql('SELECT products.name,products.price FROM ? as category1 join ? as category2 using products.name', [$scope.company1.productcategories,$scope.company2.productcategories], function(data) { 
        console.log("Query executed"); 
        console.log(data); 
       }); 

Но это ошибки.

Пожалуйста, дайте мне знать правильную процедуру.

С уважением, Sabarisri

ответ

4

Во-первых, когда вы работаете только на локальной памяти имеется на причины, чтобы сделать ее асинхронной. Таким образом, ваши первые изменения должны использовать

var res = alasql('SELECT productCategories->0->name FROM ?',[$scope.selectedCompanies]); 

Вы очень близки. Вы в основном хотите запросить только на данных productCategories - так что вы должны сделать

var res = alasql('SELECT name FROM ?',[$scope.selectedCompanies.productCategories]); 

Bonus информация: Если вы хотите присоединиться к чему-то вы могли бы сделать что-то вроде

var res = alasql('SELECT p.name, d.stock FROM ? p JOIN ? d ON p.name = d.company',[$scope.selectedCompanies.productCategories, $scope.otherData]); 
+0

В моем случае, Я не могу каждый раз давать полный объект массива функции alasql. Причина, почему я задал этот вопрос, у меня на самом деле две компании. Я хочу перечислять только продукты, общие для обеих компаний, для сравнения цен. Поэтому я хочу получить цену каждого продукта, если продукт происходит в обеих компаниях. Я изменил свой объект схемы. Пожалуйста, обратитесь к определению продукта « – sabari

+0

» Я также отредактировал часть описания. Пожалуйста, пройдите его один раз. и любезно дайте мне знать ответ. – sabari

 Смежные вопросы

  • Нет связанных вопросов^_^