我正试图找出我在这里缺少的东西,以及我应该把注意力集中在解决问题上的地方。我有两个表,每个表有两列。绝大多数但不是全部的Table1.symbol都在Table2.symbol中。
表1 -symbol -date
表2 -symbol -industry
我试图做的是没有工作,所以我正在尝试进行故障排除并确定我丢失线程的位置。在这一点上,我只是试图从下到上构建我的查询,但我无法得到我期望的结果。
首先,我运行了一些查询,以查看返回的内容。使用phpMyAdmin我得到以下内容:
SELECT * FROM Table1
—> (38,290 total, Query took 0.0002 sec)
SELECT DISTINCT symbol FROM Table1
—> (2,067 total, Query took 0.0016 sec)
SELECT * FROM Table2
—> (7,072 total, Query took 0.0002 sec)
SELECT DISTINCT symbol FROM Table2
-> (7,072 total, Query took 0.0011 sec)
SELECT * FROM Table1, Table 2
—> (270,786,880, Query took 0.0002 sec)
问题1:
SELECT * FROM Table1, Table2 WHERE Table1.symbol = Table2.symbol
(192 Total, Query took 0.0002)
这只返回192,返回的结果集只有S到Z的记录(但不是全部)
问题2:
SELECT Table1.symbol, Table2.industry WHERE Table1.symbol = Table2.symbol
—> (192 total, Query took 1.5174)
这也会返回192,但在返回结果之前会挂起超过一分钟。与问题1一样,这也仅限于S到Z(但不是全部)。
问题3:
SELECT DISTINCT Table1.symbol, Table2.industry WHERE Table1.symbol = Table2.symbol
--> (times out)
任何有关我如何解决问题并解决问题的指导都将不胜感激。
[编辑添加上下文] 数据库架构:
表1:符号:varchar(6),日期:日期
表2:符号:varchar(6),行业:varchar(100)
由于缺乏声誉,我无法内联图片,并且仅限于2个链接,因此我会在评论中发布第三个,但是......
表1(alltimehigh)按日期排序以显示最新记录
http://i60.tinypic.com/29yqxow.png
Table2(symbolbase)与WHERE一起验证表1中最近的一个条目是否存在
http://i57.tinypic.com/20pqxvm.png
最终我的目标是实现:
SELECT alltimehigh.symbol, count(alltimehigh.symbol) as total, symbolbase.industry FROM alltimehigh, symbolbase WHERE DATE_SUB(CURDATE(), INTERVAL '20' DAY) <= Date AND alltimehigh.symbol = symbolbase.Symbol GROUP by alltimehigh.symbol ORDER BY count(alltimehigh.symbol) DESC
但是现在我只是想知道为什么我无法从Table1.symbol到Table2.symbol获得匹配Table2中表示的所有符号并将它们与关联的Table2.industry一起返回那个符号。