Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以修改此Mysql查询以仅显示同一发票的发票一次_Mysql_Join_Group By_Aggregate - Fatal编程技术网

是否可以修改此Mysql查询以仅显示同一发票的发票一次

是否可以修改此Mysql查询以仅显示同一发票的发票一次,mysql,join,group-by,aggregate,Mysql,Join,Group By,Aggregate,下面的查询 SELECT <output name="c.name" title="Name" />, <output name="c.reference" title="Reference No." />, <output name="i.idinvoice" title="Invoice ID" />, <output replace="(SUM(v.quantity * s.charges))/COUNT(i.idinvoice)" />As

下面的查询

SELECT
<output name="c.name" title="Name" />,
<output name="c.reference" title="Reference No." />,
<output name="i.idinvoice" title="Invoice ID" />,
<output replace="(SUM(v.quantity * s.charges))/COUNT(i.idinvoice)" />As Invoice
<output replace="p.amount" />AS Amount,
<output replace="p.idpayment" title="Payment ID" />,
<output replace="p.cheque_no title="Cheque No" />,
<output replace="p.pdatetime" title="Processed Time" />,
<output replace="p.user" title="Processed By" type="user" attribute="username" />
FROM inv i
LEFT JOIN invitem v ON v.idinvoice = i.idinvoice
LEFT JOIN service s ON s.idservice = v.idservice
LEFT JOIN payment p ON p.idinvoice = i.idinvoice
LEFT JOIN address a ON a.idaddress = i.idaddress
LEFT JOIN client c ON c.idclient = a.idclient
WHERE a.idaddress = '<input name="idaddress" />'
GROUP BY i.idinvoice, p.amount, p.idpayment, p.cheque_no, p.pdatetime, p.user
ORDER BY i.idinvoice DESC

如果您只希望idinvoice显示一次,则您的群组成员应仅包含idinvoice。您必须决定如何显示其他参数SUM/AVG/random/none

SELECT
<output name="c.name" title="Name" />,
<output name="c.reference" title="Reference No." />,
<output replace="i.idinvoice" title="Invoice ID" />,
<output replace="(SUM(v.quantity * s.charges))/COUNT(i.idinvoice)" />AS Invoice,
<output replace="(p.amount)" data="float" />As Amount,
<output name="p.idpayment" title="Payment ID" />,
<output replace="p.cheque_no" title="Cheque No" />,
<output replace="p.pdatetime" title="Processed Time" />,
<output replace="p.user" title="Processed By" type="user" attribute="username" />
FROM inv i
LEFT JOIN invitem v ON v.idinvoice = i.idinvoice
LEFT JOIN service s ON s.idservice = v.idservice
LEFT JOIN payment p ON i.idinvoice = p.idinvoice
LEFT JOIN address a ON a.idaddress = i.idaddress
LEFT JOIN client c ON c.idclient = a.idclient
WHERE a.idaddress = '<input name="idaddress" />'
GROUP BY i.idinvoice
ORDER BY i.idinvoice DESC

好啊因此,如果您只想为invoiceID 295显示一行,那么您希望在其他列中输入哪些数据?例如,在数量方面?如果我们可以使用与前一行相同的If,那么下一行没有显示,列Amount这更像是一个GUI问题,而不是一个MySQL问题。更改GUI以隐藏值或合并行-取决于GUI的功能。是否可以执行此操作IFidinvoice==idinvoice-1,,SUMv.quantity*s.charges/COUNTi.idinvoice虽然idinvoice-1不太正确,但应该是以前的idinvoice。如果我能得到前面的idinvoice表达式,那么这可能会起作用。下面的代码段使用相同的GUI,并且在发布时使数据可见。沿着同样的路线,我想如果我能得到之前的声音表达,也有可能做到同样的事情。replace=IFpublished,a.id地址,