组合,二,MySQL的查询 - 进入 - 一JSON阵列式的PHP

时间:2017-11-02 04:32:18

标签: php mysql json

  $sql1 =  "select distinct date, count(id) from windows where start_date between '2017-01-01' and '2017-10-31' and (start_date!='0000-00-00') group by date";
  $sql2 =   "select distinct date, count(id) from AIX where start_date between '2017-01-01' and '2017-10-31' and (start_date!='0000-00-00') group by date";

我有这两个查询以(日期,ID)的形式返回输出。我想要的是合并这两个表,以便我得到一个数组的结果为(日期,ID1,ID2),其中ID1是'windows'表,ID2是'AIX'表,根据日期,他们必须打印ID的。我尝试使用“加入”,但这不起作用。 我在php中使用了array_merge()将结果合并到一个json数组中,但这也没有用。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

因为您想要组合来自两个不同表的聚合,我认为您必须先单独聚合然后以某种方式组合结果。在下面的查询中,我在子查询中聚合了两个表,然后在日期中加入它们。假设两个表都包含所有日期并具有相同的日期,这应该可以正常工作。

calendar

正如我上面提到的,如果任何一个表完全没有日期,那么你将不得不做更多的工作。在这种情况下,您可以使用日历表来包含缺少的日期。

修改

我稍微更新了查询以使用日历表。要使此查询有效,只需使用date列定义一个表betatargetstartegy<-function(beta,targetbeta,Re,C,lamda,Wp) { dvec=Re Dmat=2*lamda*C Amat=cbind(beta,1,diag(13),-diag(13)) bvec=c(targetbeta,1,rep(-2,26))-t(Amat)%*%Wp result=solve.QP(Dmat,dvec,Amat,bvec,meq=2)$solutions+Wp return(result) } t=c(0.5,1,1.5) Wp=t(t(rep(1/13,13))) a=expected_return(60,65) b=covariance(60,65) betatargetstartegy(beta,t,a,b,0.5,Wp) ,其中包含涵盖两个表格的完整日期范围。