2

whileループを使用してpvpでこのようなことをしましたが、vbには有効ではないと思います。合計 4 つのテーブルがあり、そのうちの 3 つは 1 に基づいています。

Main Table:
weather

Sub Tables:
applicationData
accidentData
trafficData

私の目標は、フィルター システムを使用して気象データ テーブルをチェックすることです。次に、天気データ フィールドの場所、日付、および時刻に基づいて、交通量、事故、およびアプリケーション データの他のテーブルを検索します。(それらはすべてこれらの列を共有します)。日時・場所ごとに複数の事故が発生する場合があります。

説明を簡単にするために、2 つの異なる表で説明してほしいので、ここに私のクエリを示します。

SELECT event, date, time, location 
FROM weather 
WHERE date= '" & datepicker.Text & "' 
AND time = '" & eventTime.SelectedItem.Value & "'

次に、日付、時刻、および場所を取得し、その情報を含むサブ テーブルの 1 つを検索します。

SELECT roadway_number, mile_marker 
FROM  accident 
WHERE date= 'query1Date' 
AND time = 'query1Time' 
AND location = 'query1Location'

このすべての情報をデータグリッドに表示し、事故データがなくてもすべての気象フィールドを表示するように表示したいと考えています。このような:

2010 年 12 月 1 日、午後 1 時、アミティ ウェザー イベント: 雪

2010 年 12 月 1 日、午後 2 時、アミティ ウェザー イベント: 小雨

5pm, 12/1/10 Amity Weather Event: 大雪 事故: Road: I165N, Mile_Marker 95.5 Road: I165N, Mile_Marker 71

午後 7 時、2010 年 12 月 1 日、アミティ気象イベント: 大雪 事故: 道路: I165S、Mile_Marker 85.5

本当に助かりました!

4

2 に答える 2

1

これには左外部結合を使用できるはずです。

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 & "'
于 2011-08-22T13:55:57.033 に答える
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 結合は、関連する事故があるかどうかに関係なく、すべての気象記録を取得するための鍵です。

入力値を連結する代わりに、クエリをパラメーター化することも検討する必要があります。

于 2011-08-22T14:02:55.937 に答える