収集するテーブルのセットがあり、そこから2つの異なるブラックリスト(typeId)間の個別のIPアドレス(ip)の数を見つけようとしています。基本的にはテーブルと交差します。ただし、テーブルをそれ自体に結合するという私のクエリでは、奇妙な結果が得られます。
sqlite> .schema
CREATE TABLE feedz_ip2 (fileId INTEGER NOT NULL, ip NUMERIC, utime INT, typeId INTEGER);
CREATE TABLE feedz_ip_types (typeId INTEGER PRIMARY KEY, type STRING UNIQUE);
CREATE INDEX ip_id ON feedz_ip2(ip);
CREATE INDEX types_id ON feedz_ip2(typeId);
sqlite> select * from feedz_ip2 limit 4;
1|86176256|1347929568|2
1|247463936|1347929568|2
1|247476224|1347929568|2
1|247478272|1347929568|2
sqlite> select * from feedz_ip_types;
1 | malwaredomains
2 | spamhaus
3 | badipset
4 | abuse.ch
5 | malwarepatrol
sqlite> select a.typeId, b.typeId, count(a.ip)
from feedz_ip2 a
inner join feedz_ip2 b on a.typeId != b.typeId and a.ip=b.ip
;
5 | 3 | 9265512
私が本当に探しているのは、すべての異なるリストの交差点でなければなりません
1|3|200
1|5|900
2|3|300
交差または共通のIPアドレスがない場合、それらの列の組み合わせはリストされません。
クエリがsqliteを本当に混乱させているのか、混乱しているのかわかりません。