是否可以使用MySQL中的查询结果来加入视图的结果?

时间:2012-12-05 12:10:30

标签: mysql sql join

所以我有这个精彩的查询,感谢用户bonCodigo in a previous question他回答我:

SELECT 
    ticker, 
    `Date` as date, 
    `Daily Open`, 
    `Daily High`,
    `Daily Low`,
    `Daily Close`,
    concat(round(pxpct*100,2),'%') `Percent change`

FROM 
    (select case when ticker <> @pxticker then @pxclose := null end, 
    p.*, 
    (`Daily Close`-@pxclose) as pxchange,
    (`Daily Close`-@pxclose)/@pxclose as pxpct, 
    (@pxclose := `Daily Close`),
    (@pxticker := ticker) from viewDailyOHLCPrices p
JOIN
    (select @pxclose := null, @pxticker := ticker from viewDailyOHLCPrices order by     ticker, date limit 1)  as a
    order by ticker, date ) as b
order by ticker, date asc

返回我的结果:

TICKER  DATE        OPEN    HIGH    LOW     CLOSE   PXCHANGE  PXPCT
AAAE    11-26-2012  0.01    0.01    0.01    0.01    (null)    (null)
AAAE    11-27-2012  0.013   0.014   0.0083  0.014   0.004     40.0000%
AAAE    11-28-2012  0.014   0.0175  0.014   0.0165  0.0025    17.8571%
AAAE    11-29-2012  0.0175  0.0175  0.0137  0.0137  -0.0028   -16.9697%
AAMRQ   11-26-2012  0.4411  0.53    0.4411  0.529   (null)    (null)
AAMRQ   11-27-2012  0.51    0.511   0.461   0.495   -0.034    -6.4272%
AAMRQ   11-28-2012  0.482   0.49    0.43    0.464   -0.031    -6.2626%
AAMRQ   11-29-2012  0.4505  0.459   0.4411  0.459   -0.005    -1.0776%
AAMRQ   11-30-2012  0.45    0.457   0.4455  0.4568  -0.0022   -0.4793%

现在我有了一个观点,我们称之为简单myview,并假设它有字段:date, ticker, v1, v2

有没有办法可以将view1的结果与上面的查询结果一起加入,所以我最终会得到这样的结果?

DATE          TICKER    v1    v2    DATE        OPEN    HIGH    LOW     CLOSE   PXCHANGE  PXPCT
11-25-2012    AAAE      117   287   11-26-2012  0.01    0.01    0.01    0.01    (null)    (null)
11-26-2012    AAAE      339   159   11-27-2012  0.013   0.014   0.0083  0.014   0.004     40.0000%
11-27-2012    AAAE      219   937   11-28-2012  0.014   0.0175  0.014   0.0165  0.0025    17.8571%
11-28-2012    AAAE      821   403   11-29-2012  0.0175  0.0175  0.0137  0.0137  -0.0028   -16.9697%
11-25-2012    AAMRQ     263   721   11-26-2012  0.4411  0.53    0.4411  0.529   (null)    (null)
11-26-2012    AAMRQ     173   932   11-27-2012  0.51    0.511   0.461   0.495   -0.034    -6.4272%
11-27-2012    AAMRQ     218   364   11-28-2012  0.482   0.49    0.43    0.464   -0.031    -6.2626%
11-28-2012    AAMRQ     234   844   11-29-2012  0.4505  0.459   0.4411  0.459   -0.005    -1.0776%
11-29-2012    AAMRQ     821   472   11-30-2012  0.45    0.457   0.4455  0.4568  -0.0022   -0.4793%

正如您所看到的,我想加入myview以及tickerdate字段的查询(以下交易日的日期如果是第二个日期列)。这很重要,因为myview来自一个表的查询,其中我每天都有数据,包括星期六和星期日,但是查看viewDailyOHLCPrices查询表格,我只有开放交易日的数据(通常是Mon-周五......但星期六和星期日没有数据,也没有工作日假期的数据。 因此,第二个日期列必须是下一个交易日(viewDailyOHLCPrices视图中有数据的第二天)。

所以在我硬编码的示例结果中,在第一行中,我确实想要值v1&amp; v2(星期日)的11-25-2012open(星期一)的highlowclose11-26-2012价格,以及11-26-2012(星期一)和11-23-2012(星期五)之间的价格变化......等等。

我在开头发布的查询已经处理了从一天到有前一天的有效数据增加/减少百分比(PXPT)(对于那个ticker

(在这种情况下,第一行的PXPCT为'(null)',因为我没有'11-25-2012之前的数据')

我知道我可以加入2个或更多表,或者2个或更多个视图,但我不确定你是否可以加入一个视图和一个查询(就像在我的问题中一样)。

我真的希望我没有让我的问题变得复杂或凌乱。请不要犹豫,要求您提供任何可能需要的澄清; - )

谢谢! 博加。

0 个答案:

没有答案