1
我有一个查询,计数为来自2013年11月11日至2013年11月24日两个不同表中的每个客户端的调用和失败调用。将第三个表中的SQL查询合并到从2个不同表中计数的现有查询中
SELECT d.id_client,
d.login,
Coalesce(c.total, 0) AS calls,
Coalesce(fc.total, 0) AS calls_failed
FROM api.clients d
LEFT OUTER JOIN (SELECT Count(*) AS total,
id_client
FROM voip.calls c
WHERE c.call_start >= '2013-11-11 00:00:00'
AND c.call_start < '2013-11-25 00:00:00'
GROUP BY id_client) c
ON d.id_client = c.id_client
LEFT OUTER JOIN (SELECT Count(*) AS total,
id_client
FROM voip.callsfailed c
WHERE c.call_start >= '2013-11-11 00:00:00'
AND c.call_start < '2013-11-25 00:00:00'
AND c.ie_error_number <> 0
GROUP BY id_client) fc
ON d.id_client = fc.id_client
WHERE d.id_client IN (SELECT e.idclient
FROM voip.invoiceclients e
WHERE e.clientnr = 'demo')
我有一个单独的查询,对于每个客户端提供client_balance,MOBILE_NUMBER,名称。
SELECT cr.id_client,
inv.taxid AS company,
inv.name,
inv.lastname,
inv.mobilephone,
cr.account_state
FROM clientsretail cr,
invoiceclients inv
WHERE cr.id_client = inv.idclient
AND inv.clientnr = 'demo'
ORDER BY inv.taxid,
inv.name;
如何合并这些查询生成以下的输出: id_client,公司名称,姓氏,Mobilephone,登录,电话,失败,调用,平衡
我试图采取一些婴儿步骤,下面的查询,但没有成功:
SELECT d.id_client, d.login,
COALESCE(c.total, 0) AS calls, COALESCE(fc.total, 0) AS calls_failed
FROM api.clients d
LEFT OUTER JOIN
(
SELECT COUNT(*) AS total, id_client
FROM voip.calls c
WHERE c.call_start >= '2013-11-11 00:00:00'
AND c.call_start < '2013-11-25 00:00:00'
GROUP BY id_client
) c ON d.id_client = c.id_client
LEFT OUTER JOIN
(
SELECT COUNT(*) AS total, id_client
FROM voip.callsfailed c
WHERE c.call_start >= '2013-11-11 00:00:00'
AND c.call_start < '2013-11-25 00:00:00'
AND c.IE_error_number <> 0
GROUP BY id_client
) fc ON d.id_client = fc.id_client
LEFT OUTER JOIN
(
SELECT c.idclient,
c.taxid,
c.name,
c.lastname,
c.mobilephone
FROM voip.invoiceclients c
) v ON d.id_client=v.idclient
WHERE d.id_client IN
(
SELECT e.idclient
FROM voip.invoiceclients e
WHERE e.clientnr='demo'
)
您的SQL语法错误;检查对应于你的MySQL服务器版本的手册正确的语法附近
'FROM voip.invoiceclients c
) v ON d.id_client=v.idclient WHERE d.id_clie' at line 28
好像你只是将第二个查询包装在parens中,并且在SELECT列表中使用'LEFT JOIN(subquery)v ON v.id_client = d.client_id',并从该内联视图中引用列(别名为v)外部查询...'SELECT d.id_client,v.company,v.name,...'。也许我错过了什么? – spencer7593
您的编辑,你都留下了''你的V子查询c.mobilephone'后'。加上此编辑你不需要在where子句只是把它在V子查询:'FROM voip.invoiceclients C,其中c.clientnr ='demo'' –
我最终得到了太多的结果,如果我移动的where子句。 – user2924339