Bây giờ bạn đã giải thích kỹ hơn về những gì bạn thực sự muốn đạt được, có thể thấy rằng vấn đề phức tạp hơn nhiều. Bạn thực sự muốn tất cả các kết hợp của subscriber_id
và tag_id
, và sau đó đếm số lượng mục nhập thực tế trong sản phẩm bảng đã kết hợp. khò khè. Vì vậy, đây là câu lệnh SQL:
SELECT combinations.tag_id,
combinations.subscriber_id,
-- correlated subquery to count the actual hits by tag/subscriber when joining
-- the two tables using content_id
(SELECT count(*)
FROM content_hits AS h
JOIN content_tag AS t ON h.content_id = t.content_id
WHERE h.subscriber_id = combinations.subscriber_id
AND t.tag_id = combinations.tag_id) as cnt
-- Create all combinations of tag/subscribers first, before counting anything
-- This will be necessary to have "zero-counts" for any combination of
-- tag/subscriber
FROM (
SELECT DISTINCT tag_id, subscriber_id
FROM content_tag
CROSS JOIN content_hits
) AS combinations