Php 编写一个涉及3个表的MySQL查询

Php 编写一个涉及3个表的MySQL查询,php,mysql,database,left-join,inner-join,Php,Mysql,Database,Left Join,Inner Join,我正在尝试编写一个MySQL查询,但我很难编写它,它涉及3个表 table 1 - Invoice table - Has a client id, credit id, invoice id and commission subtotal table 2 - Credits table - Has a client id, credit id and commission amount (same as commission subtotal) table 3 - Agents table -

我正在尝试编写一个MySQL查询,但我很难编写它,它涉及3个表

table 1 - Invoice table - Has a client id, credit id, invoice id and commission subtotal
table 2 - Credits table - Has a client id, credit id and commission amount (same as commission subtotal)
table 3 - Agents table - Has a client id and agent id
我正在尝试根据发票id上的每个信用id从信用表中创建代理佣金金额列表

我真的希望这是有道理的

这就是我目前所拥有的:

select cfi.commissionamount
        from invoice ii
        inner join clientagent cli
        on ii.client = cli.clientid
        inner join clientagent cl
        on ii.client = cl.clientid
        left outer join creditfee cfi
        on cfi.client = ii.client
        and (cfi.issuedate BETWEEN ii.startdate AND ii.enddate)
        where ii.invoiceid = cfi.invoiceid
        and cli.clientagentid = cl.clientagentid
但唯一返回的是我的发票表中的一堆随机行……关于如何解决这个问题有什么想法吗


任何朝着正确方向的帮助或步骤都将是巨大的帮助。

我认为您正在寻找这一点,但您需要回答上述问题,以便我们为您提供更多帮助,并提供准确的表结构,因为您的单元格名称中有空格

SELECT cli.agentid, SUM(cfi.commissionamount)
    FROM invoice AS ii
        INNER JOIN clientagent AS cli
            ON ii.clientid = cli.clientid
        LEFT OUTER JOIN creditfee AS cfi
            ON cfi.clientid = ii.clientid AND (cfi.issuedate BETWEEN ii.startdate AND ii.enddate)
        WHERE ii.invoiceid = cfi.invoiceid AND cli.clientagentid = cl.clientagentid
        GROUP BY ii.clientid

我想您正在寻找这个,但是您需要回答上面的问题,以便我们为您提供更多帮助,并提供准确的表结构,因为您的单元格名称中有空格

SELECT cli.agentid, SUM(cfi.commissionamount)
    FROM invoice AS ii
        INNER JOIN clientagent AS cli
            ON ii.clientid = cli.clientid
        LEFT OUTER JOIN creditfee AS cfi
            ON cfi.clientid = ii.clientid AND (cfi.issuedate BETWEEN ii.startdate AND ii.enddate)
        WHERE ii.invoiceid = cfi.invoiceid AND cli.clientagentid = cl.clientagentid
        GROUP BY ii.clientid

查看表结构会很有用。您期望的输出是什么?是否有任何原因表明clientagent上的两个连接具有相同的条件?如果联接条件相同,则两次联接同一个表没有意义。Invoiceid在无信用表中是否唯一,或者多个客户端可以拥有相同的一个?发票id在信用费表中是唯一的。查看表结构会很有用。您的预期输出是什么?您在clientagent上的两个联接具有相同条件的原因是什么?如果联接条件相同,则两次联接同一个表是没有意义的。Invoiceid在无信用表中是唯一的,还是多个客户端可以拥有相同的?发票id在信用费表中是唯一的