我有两张桌子 - 'cityname'和'citymoisture'。
'cityname' has 2 columns:
-city_ID <- integer and primary key that increments automatically
-city_full_name <- character name i.e. boston, toronto, new york city etc...
'citymoisture' has 7 columns:
-city_ID <- tied to the city_ID field via a Foreign Key
-date
-time
-open
-high
-low
-close
我想做的是 -
通过指定城市名称和日期范围,在水分表中查询open,high,low和close中的任何一个。
以下查询有效:
USE moisturedb
SELECT citymoisture.date, citymoisture.time, citymoisture.close
FROM citymoisture
WHERE (citymoisture.date BETWEEN '2011/03/09' AND '2011/03/14') AND citymoisture.city_id=5;
但这只引用了'citymoisture'表。我有一个前端应用程序,允许用户选择城市名称,所以在某种意义上我想运行一个联接查询,根据cityname表中的city_full_name列删除结果。
我在几次加入查询时都没有成功。我还花了最后几个小时搜索联接查询示例而没有任何成功。
非常感谢你的帮助。
作为Nikhil请求的后续跟踪,这是建议查询的示例输出。
| 2011-03-10 | 03:38:00 | 0.918 |
| 2011-03-10 | 03:39:00 | 0.897 |
| 2011-03-10 | 03:40:00 | 0.917 |
| 2011-03-10 | 03:41:00 | 0.915 |
| 2011-03-10 | 03:42:00 | 0.914 |
| 2011-03-10 | 03:43:00 | 0.924 |
| 2011-03-10 | 03:44:00 | 0.922 |
| 2011-03-10 | 03:45:00 | 0.922 |
| 2011-03-10 | 03:46:00 | 0.923 |
| 2011-03-10 | 03:47:00 | 0.935 |
| 2011-03-10 | 03:48:00 | 0.953 |
| 2011-03-10 | 03:49:00 | 0.927 |
| 2011-03-10 | 03:50:00 | 0.962 |
| 2011-03-10 | 03:51:00 | 0.914 |
| 2011-03-10 | 03:52:00 | 0.935 |
+--------------+--------------+-------+
14770 rows in set (2 min 28.80 sec)
第3列是水分数据。查询中每个城市的值在它们一个接一个地堆叠的意义上编织在一起。我非常想要以下输出,其中每个城市的水分数据显示在不同的列中:
2011-03-10 03:49:00 0.935 0.935 0.935 .....
2011-03-10 03:50:00 0.935 0.935 0.935 .....
2011-03-10 03:51:00 0.935 0.935 0.935 .....
2011-03-10 03:52:00 0.935 0.935 0.935 .....
2011-03-10 03:53:00 0.935 0.935 0.935 .....
2011-03-10 03:54:00 0.935 0.935 0.935 .....
答案 0 :(得分:1)
试试这个:
USE moisturedb
SELECT citymoisture.date, citymoisture.time, citymoisture.close
FROM citymoisture INNER JOIN cityname ON cityname.city_ID=citymoisture.city_ID
WHERE (citymoisture.date BETWEEN '2011/03/09' AND '2011/03/14') AND cityname.city_full_name='boston'
答案 1 :(得分:0)
SELECT citymoisture.date, citymoisture.time, citymoisture.close
FROM citymoisture LEFT JOIN cityname USING (city_ID)
WHERE (citymoisture.date BETWEEN '2011/03/09' AND '2011/03/14')
AND citymoisture.city_full_name='boston';
但是,我认为您在问题中发布的查询是应该使用的查询。您必须拥有一个带有下拉菜单的前端,供用户选择城市。可以使用cityname
填充该下拉列表,以便在用户选择城市时将city_ID
发送回服务器。然后,您可以在已发布的原始查询中使用city_ID
。如需参考,请检查value
代码here的option
属性。