php - mssql和左连接重复记录

标签 php sql-server database odbc

原始查询

SELECT DISTINCT
      IP.op_code as ip_op_code,
      IPH.op_code as iph_op_code,
      debt_trans.tx_amount as cash,
      DT.tx_amount as revenue
    FROM debt_trans
    LEFT JOIN debt_trans DT ON DT.debt_code=debt_trans.debt_code
    LEFT JOIN instplan IP ON IP.debt_code=debt_trans.debt_code
    LEFT JOIN instplanheader IPH ON IPH.debt_code=debt_trans.debt_code

    AND debt_trans.tran_code NOT IN ('DR3001','DR3002','DR3003','DR3004','RP1800','CC5000')
    AND debt_trans.tx_amount > 0
    AND debt_trans.tx_date >= '2019-02-04' AND debt_trans.tx_date <= '2019-02-04'

    AND IP.ipactualpaymentamt > 0
    AND IP.tran_code NOT IN ('DR3001','DR3002','DR3003','DR3004','RP1800','CC5000')
    AND IP.ipactualpaymentdt >= '2019-02-04' AND IP.ipactualpaymentdt <= '2019-02-04'
    AND (IP.ipactualpaymentdt+debt_trans.tx_time)=(debt_trans.tx_date+debt_trans.tx_time)

    AND DT.tran_code IN ('CC5000')
    AND DT.tx_amount > 0.00
    AND DT.tx_date >= '2019-02-04' AND DT.tx_date <= '2019-02-04'

    AND DT.tx_date=debt_trans.tx_date
    AND DT.tx_time=debt_trans.tx_time

    AND IPH.ipplanid=IP.ipplanid

输出结果

Row Count : 4

[0] => Array
    (
        [ip_op_code] => DOMP
        [iph_op_code] => DOMP
        [cash] => 5.00
        [revenue] => 2.25
    )

[1] => Array
    (
        [ip_op_code] => DOMP
        [iph_op_code] => DOMP
        [cash] => 671.00
        [revenue] => 301.95
    )

[2] => Array
    (
        [ip_op_code] => RHYSL
        [iph_op_code] => RHYSL
        [cash] => 5.00
        [revenue] => 2.25
    )

[3] => Array
    (
        [ip_op_code] => RHYSL
        [iph_op_code] => RHYSL
        [cash] => 671.00
        [revenue] => 301.95
    )

预期结果

行数:2

[0] => Array
    (
        [ip_op_code] => DOMP
        [iph_op_code] => DOMP
        [cash] => 5.00
        [revenue] => 2.25
    )

[1] => Array
    (
        [ip_op_code] => RHYSL
        [iph_op_code] => RHYSL
        [cash] => 671.00
        [revenue] => 301.95
    )

我现在已经添加了我正在尝试执行的完整正确查询,请您尝试帮助我解决这个问题。

我有 3 张 table 。

债务交易 实现计划 安装计划标题

我必须再次加入 Debt_trans,因为我必须获得下一行。

当我加入 instplan 和 instplanheader 时,一切似乎都陷入困境

最佳答案

查看您的数据,您能否加入也必须匹配 op_code AND instplanheader.op_code = instplan.op_code

$sql = "SELECT DISTINCT
      instplan.debt_code,
      instplan.op_code,
      instplanheader.op_code as plan_op,
      instplan.ipactualpaymentamt
    FROM instplanheader
    LEFT JOIN instplan ON instplanheader.debt_code=instplan.debt_code

        AND instplanheader.op_code = instplan.op_code 

        AND instplan.tran_code NOT IN ('DR3001','DR3002','DR3003','DR3004')
        AND instplan.ipactualpaymentamt > 0.00
        AND instplan.ipactualpaymentdt >= '2019-02-04' AND instplan.ipactualpaymentdt <= '2019-02-04'
          AND instplanheader.iphcreationdate >= '2018-12-01' AND instplanheader.iphcreationdate <= '2019-02-04'
    ";

关于php - mssql和左连接重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54557998/

相关文章:

php - 使用 Doctrine DBAL 计算 SELECT 查询中的行数

javascript - 无法从服务器中的 php 调用 Ajax 函数

与原始查询相比,C# LINQ 查询创建低效的 SQL

node.js - 如何选择 Mongoose 中的对象数组?

php - 将数据从 .xml php 数组插入到 mysql

php - 我低估了MySQL吗?

sql - UPDATE 多个 WHERE SQL 不起作用

sql-server - 我怎样才能在许多表中拥有唯一的列

mysql - 在 MySQL 上迭代具有条件的行对

java - iOS - 在应用程序外部使用 java 填充数据库