まず最初に、私がやろうとしていることの SqlFiddle があります: http://sqlfiddle.com/#!2/a3f19/1
だから私は2つのテーブルdomains
とlinks
. すべてのリンクにはドメインがあり、各ドメインには複数のリンクを含めることができます。同じ IP アドレス (AS) を持つドメインの数を取得してからcount
、それらの url_counts (AS total
) の合計を取得しようとしています。これが私がやろうとしていることです:
2 つのデータベース テーブルがあります
CREATE TABLE IF NOT EXISTS `domains` (
`id` int(15) unsigned NOT NULL AUTO_INCREMENT,
`tablekey_id` int(15) unsigned NOT NULL,
`domain_name` varchar(300) NOT NULL,
`ip_address` varchar(20) DEFAULT NULL,
`url_count` int(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=innodb DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `links` (
`id` int(15) unsigned NOT NULL AUTO_INCREMENT,
`tablekey_id` int(15) unsigned NOT NULL,
`domain_id` int(15) unsigned NOT NULL,
`page_href` varchar(750) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=innodb DEFAULT CHARSET=utf8;
これらのテーブルのデータは次のとおりです。
INSERT INTO `domains`
(`id`, `tablekey_id`, `domain_name`, `ip_address`, `url_count`)
VALUES
('1', '4', 'meow.com', '012.345.678.9', '2'),
('2', '4', 'woof.com', '912.345.678.010','3'),
('3', '4', 'hound.com', '912.345.678.010','1');
INSERT INTO `links`
(`id`, `tablekey_id`, `domain_id`, `page_href`)
VALUES
('1', '4', '1', 'http://prr.meow.com/page1.php'),
('2', '4', '1', 'http://cat.meow.com/folder/page11.php'),
('3', '4', '2', 'http://dog.woof.com/article/page1.php'),
('4', '4', '2', 'http://dog.woof.com/'),
('5', '4', '2', 'http://bark.woof.com/blog/'),
('6', '4', '3', 'http://hound.com/foxhunting/');
私が得たい結果は次のとおりです。
012.345.678.9 1 2
912.345.678.010 2 4
しかし、私が得た結果は
012.345.678.9 2 4
912.345.678.010 4 10
私が持っているクエリは次のとおりです。
SELECT
ip_address,
COUNT(1) AS count,
SUM(url_count) AS total
FROM `domains` AS domain
JOIN `links` AS link ON link.domain_id = domain.id
WHERE domain.tablekey_id = 4
AND ip_address > ''
GROUP BY ip_address
前もって感謝します私はこれに一日中取り組んでいます:(