我正在尝试使用 sql select & vb .net 执行下一个语句
Posted
技术标签:
【中文标题】我正在尝试使用 sql select & vb .net 执行下一个语句【英文标题】:I'm trying to next statements using sql select & vb .net 【发布时间】:2011-11-01 04:26:30 【问题描述】:我在 pvp 中使用 while 循环做过类似的事情,但我认为这对 vb 无效。我总共有 4 个表,其中 3 个基于 1 个。
Main Table:
weather
Sub Tables:
applicationData
accidentData
trafficData
我的目标是使用我的过滤系统来检查天气数据表。然后,它根据天气数据字段的位置、日期和时间在其他表中搜索交通、事故和应用程序数据。 (他们都共享这些列)。有时每个日期/时间/地点都会发生多起事故。
为了更容易解释,我希望你用两个不同的表来解释它,所以这里是我的查询。
SELECT event, date, time, location
FROM weather
WHERE date= '" & datepicker.Text & "'
AND time = '" & eventTime.SelectedItem.Value & "'
然后我想获取日期、时间和位置,并使用该信息搜索其中一个子表。
SELECT roadway_number, mile_marker
FROM accident
WHERE date= 'query1Date'
AND time = 'query1Time'
AND location = 'query1Location'
我想在数据网格中显示所有这些信息,并让它显示所有天气字段,即使没有事故数据。像这样:
10 年 12 月 1 日下午 1 点,友好 天气事件:雪
10 年 12 月 1 日下午 2 点,友好 天气事件:小雨
下午 5 点,2010 年 12 月 1 日 天气事件:大雪 意外: 道路:I165N,Mile_Marker 95.5 道路:I165N,Mile_Marker 71
晚上 7 点,2010 年 12 月 1 日 天气事件:大雪 意外: 道路:I165S,Mile_Marker 85.5
非常感谢您的帮助!
【问题讨论】:
这段代码容易受到sql注入的攻击。不酷。 【参考方案1】:不要在循环中查询数据库(真正的性能杀手),而是在查询中加入表:
SELECT weather.event, weather.date, weather.time, location,
accident.roadway_number, accident.mile_marker
FROM weather
LEFT OUTER JOIN accident on weather.date = accident.date and weather.time = accident.time
and weather.location = accident.location
WHERE date= '" & datepicker.Text & "' AND time = '" & eventTime.SelectedItem.Value & "'
无论是否发生相关事故,OUTER 连接都是获取所有天气记录的关键。
您还应该考虑对查询进行参数化,而不是连接输入值。
【讨论】:
我试图将它用于我的应用程序数据(位置实际上称为 tmc) SELECT weather.event, weather.date, weather.time, weather.tmc, application.weather, application.surface_temperature FROM weather LEFT OUTER JOIN application on weather.date = application.date and weather.time = application.time and weather.tmc = application.tmc WHERE weather.date= '" & datepicker.Text & "' 我用数据列表事件显示它并且天气时间显示,但应用程序数据不显示(无错误) 我知道我的问题是什么。我的 csv 文件在我的单元格末尾放置了中断,所以它没有找到完全匹配的东西....我用 % “喜欢”并且它起作用了.. 必须修复我的 csv -> mysql 转换。谢谢!【参考方案2】:您应该能够为此使用左外连接:
SELECT w.event, w.date, w.time, w.location, a.roadway_number, a.mile_marker
FROM weather w
LEFT OUTER JOIN accident a ON a.date = w.date
AND a.time = w.time
AND a.location = w.location
WHERE w.date= '" & datepicker.Text & "'
AND w.time = '" & eventTime.SelectedItem.Value & "'
【讨论】:
我遇到了同样的问题,就像我对你之后的人的回应所做的那样。天气表数据显示,但事故没有。我正在使用数据列表和 时间:,事件:天气:, Surface Temperature: 我尝试使用 a.roadway_number 但执行此操作时出现错误 我知道我的问题是什么。我的 csv 文件在我的单元格末尾放置了中断,所以它没有找到完全匹配的东西....我用 % “喜欢”并且它起作用了.. 必须修复我的 csv -> mysql 转换。谢谢!以上是关于我正在尝试使用 sql select & vb .net 执行下一个语句的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL Developer 中的 Varchar2 变量
Proc Sql Select Into 正在创建一个我无法调用的临时变量