Javascript Alasql-在json中查询嵌套对象
我有一个json对象,如下所示 易趣对象Javascript Alasql-在json中查询嵌套对象,javascript,sql,json,alasql,Javascript,Sql,Json,Alasql,我有一个json对象,如下所示 易趣对象 { __v: 0 _id: "56e192f0aea7131c15513328" headquarters: "New York" name: "Ebay" productCategories: [{ _id: "56e193beaea7131c1551332d" name: "Footwear" products: [{ name:
{
__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
}]
}
亚马逊对象
{
__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);
});
但这是错误的
请告诉我正确的程序
问候,,
首先,当您仅在本地内存上工作时,有理由使其异步。所以你的第一个改变应该是使用
var res = alasql('SELECT productCategories->0->name FROM ?',[$scope.selectedCompanies]);
你很接近。您基本上只想查询productCategories数据,所以应该这样做
var res = alasql('SELECT name FROM ?',[$scope.selectedCompanies.productCategories]);
奖励信息:如果你想加入某项活动,你可以做如下事情
var res = alasql('SELECT p.name, d.stock FROM ? p JOIN ? d ON p.name = d.company',[$scope.selectedCompanies.productCategories, $scope.otherData]);
首先,当您只在本地内存上工作时,有理由使其异步。所以你的第一个改变应该是使用
var res = alasql('SELECT productCategories->0->name FROM ?',[$scope.selectedCompanies]);
你很接近。您基本上只想查询productCategories数据,所以应该这样做
var res = alasql('SELECT name FROM ?',[$scope.selectedCompanies.productCategories]);
奖励信息:如果你想加入某项活动,你可以做如下事情
var res = alasql('SELECT p.name, d.stock FROM ? p JOIN ? d ON p.name = d.company',[$scope.selectedCompanies.productCategories, $scope.otherData]);
在我的例子中,我不能每次都给alasql函数完整的数组对象。我问这个问题的原因是,我实际上有两家公司。我只想列出两家公司共有的产品,以便进行价格比较。所以我想得到每种产品的价格,前提是这两个公司都有产品。我已经编辑了我的模式对象。请参考“产品”定义,我也编辑了说明部分。请检查一下。请告诉我答案。在我的情况下,我不能每次都给alasql函数完整的数组对象。我问这个问题的原因是,我实际上有两家公司。我只想列出两家公司共有的产品,以便进行价格比较。所以我想得到每种产品的价格,前提是这两个公司都有产品。我已经编辑了我的模式对象。请参考“产品”定义,我也编辑了说明部分。请检查一下。请告诉我答案。