2012-01-25 16 views
1

私は誰かがこれに非常に単純な答えを持っていますが、私は私の人生のためにそれをうまくすることはできません確信している:複数の日付範囲でmysql結果を取得するにはどうすればよいですか?

Vehicles: Vehicle_id, Reg_number...
Datalogger: Logger_id, event, status, date...
Vehicle_Loggers: Vehicle_id, Logger_id, installed_from, installed_to:私はこのような何かを見て3つのテーブルを持っています

それは異なる時間に装着し、複数のロガーを持っている場合でも、私は与えられた車両のログ(イベントとステータス)の全体の歴史になるだろうどのようにこれらのテーブルを使用して

(関係がここで同じ名前の列にあります) ?

これはカーソルを使用して行うことができますが、実際には設定された操作であることがわかります(車両に取り付けられているロガーのセットを取得してから、そのロガーの特定の日付範囲)

EDIT:ロガー日付の故に包含、その寿命の間に複数の車両に使用することができます。

select v.Reg_number, d.* from Vehicles v 
inner join Vehicle_Loggers vl on vl.Vehicle_id = v.Vehicle_id 
inner join Datalogger d on d.Logger_id = vl.Logger_Id 
where v.Reg_number = ... 

だけで意図したいずれかのReg_numberを置き換える:

おかげ

ガレス

答えて

1

あなたはこのようにそれを行うことができます。


おそらくこのようになり、アカウント内の日付を取るために:私たちは関係なく、これは、各ロガーの履歴を取得していないと思いますので、これを考慮にインストールされた日付を取ることはありません私の知る限り

select v.Reg_number, d.* from Vehicles v 
inner join Vehicle_Loggers vl on vl.Vehicle_id = v.Vehicle_id 
inner join Datalogger d on d.Logger_id = vl.Logger_Id and d.date between vl.installed_from and vl.installed_to 
where v.Reg_number = ... 
+0

車に取り付けられていた。 – ridecar2

+0

@ ridecar2次に2番目のクエリを試してください:) –

+0

ありがとうございました。これは完璧に機能しました(JOIN句で複数の条件を使用することはできませんでした)。 – ridecar2

関連する問題