一致するデータまたは異なるデータのセットを表示する方法があるかどうか疑問に思っていました..たとえば、3つのテーブルがあるとします。
tbl_1-
ip |isp |infection
----------------------
1 |aaaa |malware
2 |bbbb |malware
3 |cccc |ddos
3 |cccc |trojan
4 |dddd |ddos
tbl_2-
ip |isp |infection
----------------------
1 |aaaa |malware
3 |cccc |ddos
4 |dddd |trojan
5 |eeee |trojan
6 |ffff |other
tbl_3-
ip |isp |infection
----------------------
1 |aaaa |ddos
6 |ffff |
2 |bbbb |other
そして、次のような結果を得るには、
Result i need-
ip |isp |infection
----------------------
1 |aaaa |malware
1 |aaaa |ddos
2 |bbbb |malware
2 |bbbb |other
3 |cccc |ddos
3 |cccc |trojan
4 |dddd |ddos
4 |dddd |trojan
5 |eeee |trojan
6 |ffff |other
6 |ffff |
問題は、このシナリオに使用する方法がわからないことです。このクエリを使用しましたfull join
。
SELECT a. * , b. * , c. *
FROM tbl_1 a
LEFT OUTER JOIN tbl_2 b
USING ( ip, isp, infection )
LEFT OUTER JOIN tbl_3 c
USING ( ip, isp, infection )
UNION
SELECT a. * , b. * , c. *
FROM tbl_2 b
LEFT OUTER JOIN tbl_1 a
USING ( ip, isp, infection )
LEFT OUTER JOIN tbl_3 c
USING ( ip, isp, infection )
UNION
SELECT a. * , b. * , c. *
FROM tbl_3 c
LEFT OUTER JOIN tbl_1 a
USING ( ip, isp, infection )
LEFT OUTER JOIN tbl_2 b
USING ( ip, isp, infection )
しかし、これは別の方法で結果をもたらします。
Result i get-
ip |isp |infection ip |isp |infection ip |isp |infection
---------------------- ---------------------- ----------------------
1 |aaaa |malware 1 |aaaa |malware NULL|NULL |NULL
NULL|NULL |NULL NULL|NULL |NULL 1 |aaaa |ddos
2 |bbbb |malware NULL|NULL |NULL NULL|NULL |NULL
NULL|NULL |NULL NULL|NULL |NULL 2 |bbbb |other
3 |cccc |ddos 3 |cccc |ddos NULL|NULL |NULL
3 |cccc |trojan NULL|NULL |NULL NULL|NULL |NULL
4 |dddd |ddos NULL|NULL |NULL NULL|NULL |NULL
NULL|NULL |NULL 4 |dddd |trojan NULL|NULL |NULL
NULL|NULL |NULL 5 |eeee |trojan NULL|NULL |NULL
NULL|NULL |NULL 6 |ffff |other NULL|NULL |NULL
NULL|NULL |NULL NULL|NULL |NULL 6 |ffff |
これについて私を助けてください、私は3列だけでデータを表示したい..
どうもありがとうございました :)