Sql 对某一条件施加限制

Sql 对某一条件施加限制,sql,postgresql,Sql,Postgresql,我有一个查询,返回一个操作的贷方票据CN和借方票据DN,每个CN都有两个或多个DN,由字段payment\u plan\u id引用。例如,在分页时,我必须带10个操作,即10个CN和它们的DN,但如果我将限制保留为10,它还将计算我必须在查询中返回的交易的借方票据。因此,它只会给我带来2个、3个或4个操作,具体取决于信用票据附带的DNs数量 SELECT value, installment, payment_plan_id, model, creation_date, ope

我有一个查询,返回一个操作的贷方票据CN和借方票据DN,每个CN都有两个或多个DN,由字段payment\u plan\u id引用。例如,在分页时,我必须带10个操作,即10个CN和它们的DN,但如果我将限制保留为10,它还将计算我必须在查询中返回的交易的借方票据。因此,它只会给我带来2个、3个或4个操作,具体取决于信用票据附带的DNs数量

SELECT
    value, installment, payment_plan_id, model,
    creation_date, operation 
    FROM payment_plant
    WHERE model != 'IMMEDIATE'
    AND operation IN ('CN', 'DN')
    AND creation_date BETWEEN '2017-06-12' AND '2017-07-12 23:59:59'
ORDER BY
    model,
    creation_date,
    operation 
LIMIT 10
OFFSET 1
排除某些字段的表格示例:

| id | payment_plan_id | value | installment | operation |
---------------------------------------------------------
| 1  | b3cdaede        | 12    | 1           | NC        |
| 2  | b3cdaede        | 3.5   | 1           | ND        |
| 3  | b3cdaede        | 1.2   | 1           | ND        |
| 4  | e1d7f051        | 36    | 1           | NC        |
| 5  | e1d7f051        | 5.9   | 1           | ND        |
| 6  | 00e6a0b4        | 15    | 1           | NC        |
| 7  | 00e6a0b4        | 1     | 1           | ND        |
| 8  | 00e6a0b4        | 3.6   | 1           | ND        |

我如何限制这个限制,以便只考虑NCS?

< P>,上面给出的查询并不能描述你所描述的。假设你真的想要最后10个CN和他们的DN。您也没有解释CN和DN有什么共同点,所以我假设这些字段是payment\u plan\u id和分期付款。考虑到这一点,您可以通过以下方式获得:

以最后10分钟为准 选择 价值、分期付款、付款计划、id、型号、, 创建日期 从工厂付款 模型在哪里!='立即的 AND operation='CN' 创建日期介于“2017-06-12”和“2017-07-12 23:59:59”之间 订购人 模型 创建日期, 活动 限制10 偏移量1 选择最后一个\u 10\u cn.*, dn.value作为dn\u值,dn.model作为dn\u模型, dn.creation\u日期作为dn\u creation\u日期 从上个月起,作为dn加入付款工厂 在最后一个\u 10\u cn.payment\u plan\u id=dn.payment\u plan\u id 最后一次安装=dn.instance 订购人 最后一个10中国模式, 上一个创建日期, 最后一次行动 dn.创建日期;

根据实际的连接条件和您真正希望的排序方式调整上述内容


顺便说一句,你的桌子结构给你带来了麻烦。DNs实际上应该是一个单独的表,带有CNs的外键。我意识到大多数GLs并不是这样做的,但GL模型早于关系数据库。

好吧,您上面给出的查询远远不能实现您所描述的。假设你真的想要最后10个CN和他们的DN。您也没有解释CN和DN有什么共同点,所以我假设这些字段是payment\u plan\u id和分期付款。考虑到这一点,您可以通过以下方式获得:

以最后10分钟为准 选择 价值、分期付款、付款计划、id、型号、, 创建日期 从工厂付款 模型在哪里!='立即的 AND operation='CN' 创建日期介于“2017-06-12”和“2017-07-12 23:59:59”之间 订购人 模型 创建日期, 活动 限制10 偏移量1 选择最后一个\u 10\u cn.*, dn.value作为dn\u值,dn.model作为dn\u模型, dn.creation\u日期作为dn\u creation\u日期 从上个月起,作为dn加入付款工厂 在最后一个\u 10\u cn.payment\u plan\u id=dn.payment\u plan\u id 最后一次安装=dn.instance 订购人 最后一个10中国模式, 上一个创建日期, 最后一次行动 dn.创建日期;

根据实际的连接条件和您真正希望的排序方式调整上述内容


顺便说一句,你的桌子结构给你带来了麻烦。DNs实际上应该是一个单独的表,带有CNs的外键。我意识到大多数GLs并不是这样做的,但GL模型早于关系数据库。

您是按SELECT中未包含的列排序的。这似乎很奇怪。您是按SELECT中未包含的列排序的。这似乎很奇怪。