Php 编写一个涉及3个表的MySQL查询
我正在尝试编写一个MySQL查询,但我很难编写它,它涉及3个表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 -
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在信用费表中是唯一的