Logicform基础语法
本章节介绍Logicform的基础语法。
Logicform为一个JSON格式。一个标准的Logicform如下所示:
interface LogicformType {
"schema": string;
"preds": PredItemType[];
"query"?: QueryType;
"groupby"?: GroupbyItemType | GroupbyItemType[];
"sort"?: SortType;
"limit"?: number;
"skip"?: number;
}
其中各个部分和SQL有着简单的对应关系
schema->FROM xxxpreds->SELECT xxxquery->WHERE xxxgroupby->GROUP BYsort->ORDER BYlimit->LIMITskip->OFFSET
每一个部分会在其他章节中详细介绍。
字段解释
SchemaType
| 字段 | 说明 | 类型 | 默认值 | 必须 | 版本 |
|---|---|---|---|---|---|
| schema | schema的_id | string | - | 是 | |
| preds | 计算的字段、逻辑或者是schema表中的某一个字段 | PredItemType[] | - | 是 | |
| query | 筛选条件 | QueryType[] | 否 | ||
| groupby | 分组 | GroupbyItemType | GroupbyItemType[] | undefined | 否 | |
| sort | 排序 | SortType | 否 | ||
| limit | 返回条数。默认为20。如果设为-1,则全部返回。 | number | 20 | 否 | |
| skip | 用于分页,跳过n条记录,通常和limit一起使用。 | number | 0 | 否 |
注意事项
?> LEFT JOIN: Logicform里面没有left join的表达。left join为自动行为。例如,店铺里面有一个类别的属性。那么以下Logicform会根据schema里面的property自动形成left join:
{
"schema": "sales",
"preds": [
{"name":"销售额", "operator":"$sum", "pred":"amount"}
],
"groupby": "店铺_类别"
}
以下是对应的SQL语句:
SELECT
store.`类别` AS `店铺_类别`,
sum(amount) AS `销售额`,
FROM sales
LEFT JOIN store ON store._id = sales.`店铺`
GROUP BY store.`类别`
?> 其他 JOIN:Logicform不支持其他join的表达