苦苦寻求子查询/ JOIN

时间:2015-09-18 11:18:50

标签: mysql

在我开始之前请原谅我的无知,但是我试图在查询中两次引用同一个表来带回一行。无论出于何种原因,我都很难理解子查询/连接概念。为了确保我能够真正获得我用这个基本查询得到的数据:

SELECT aCR
, COUNT(CASE WHEN aSID = 30 THEN 1 ELSE NULL END) AS wtng
, CASE WHEN aSID = 30 THEN DATE_FORMAT(aAT, '%d %b %H:%i') ELSE NULL END AS wAT
, COUNT(CASE WHEN DATEDIFF(aC, CURDATE()) <=30 AND aSID != 30 THEN 1 ELSE NULL END) AS rpt
, CASE WHEN DATEDIFF(aC, CURDATE()) <=30 AND asID != 30 THEN DATE_FORMAT(aAT, '%d %b %H:%i') ELSE NULL END AS rAT

FROM a

WHERE aCR = 1111111111 AND aHID = 44 GROUP BY aID

给了我这个

        aCR     |  wtng    |      wAT     |  rpt  |      rAT
-------------------------------------------------------------------
    1111111111  |    0     |     NULL     |   1   |  16 Sep 12:39
    1111111111  |    1     | 17 Sep 17:59 |   0   |      NULL

这是正确的数据,但我需要在一行中:

        aCR     |  wtng    |      wAT     |  rpt  |      rAT
-------------------------------------------------------------------
    1111111111  |    1     | 17 Sep 17:59 |   1   |  16 Sep 12:39

可能是没有与aCR匹配的时间,因此没有返回行但是如果wtng为1,rpt为1或者两者都是1,我需要返回一行......这就是我真正在努力的地方。我试过了 许多子查询组合,但似乎无法得到它所以我正在寻求帮助...如果这是一个非常愚蠢的问题,或者如果我错过了完全明显但现在我觉得好像我',请提前道歉我只是围成一圈......

真的很感谢投票,无论是谁 - 它让学习变得更有趣

1 个答案:

答案 0 :(得分:0)

@DaDaDom,@ Tobia Tesan感谢至少回应我的帮助请求 - 我从另一个论坛得到了一些很好的帮助,这里有答案

SELECT aCR
     , MAX(wtng) AS wtng
     , MAX(wAT)  AS wAT
     , MAX(rpt)  AS rpt
     , MAX(rAT)  ASrAT 
  FROM ( "my query here" ) AS yourquery
GROUP
BY aCR