2012-02-09 15 views
0

解決策ではなく、より良い方向を探してください。これはジョインの仕事ですか?

Iは、2つのテーブルがある - Aを、B

表Aは、IPアドレスと時間(時間に等しいまたはSTARTTIMEと終了時刻との間のいずれかであろう)

表Bは、ユーザ名、STARTTIME、終了時刻、IPを有しています

仕事に取り組む、私は特定の特定のIPアドレスを使用していたAは、誰(ユーザー名)、

より一般的には、テーブルBに名を対応表内のどのIPアドレスと時間を見つけるためにしようとしています時間。

私の説明が意味をなさないと仮定すると、これは2つのテーブル間で結合が使用できる何かのようですか?次のベストステップは何か。私はあるテーブルから別のテーブルに多くの手動クエリを避けようとしています。

いずれの方向性もあります。ありがとうございます。

答えて

6

はい、参加が適当です。条件は、IPアドレスと時間制約の両方に一致する複合条件である必要があります。

select B.username, A.ipaddress, A.time 
from A inner join B on A.ipaddress = B.ipaddress 
         and A.time between B.starttime and B.endtime 
+1

+1です。あなたはマウスクリックで私を打つ。 :)私の答えを削除する。 –

+0

それは私が不思議に思っていたものでした。それらの例で私はあなたが私を8時間節約したと思う。乾杯 – notmyname

1

はい - 。それはあなたがJOINを使用すべき状況の正確なものだ

SELECT x, y, z 
     FROM a 
INNER JOIN b ON a.ip_address = b.ip_address 
-1
SELECT * 
FROM a 
INNER JOIN b 
WHERE a.ip_address = b.ip_address 
    AND b.starttime <= a.time 
    AND a.time <= b.endtime 
関連する問題