我有两张桌子
品牌表
这是特定用户选择的brand_id列表。
id_autoicrement | user_id | brand_id
1 | 5 | 7
2 | 5 | 3
3 | 5 | 1
4 | 9 | 3
5 | 9 | 7
6 | 2 | 3
7 | 2 | 7
8 | 4 | 3
产品表
这是特定用户选择的product_id列表。
id_autoicrement | user_id | product_id
1 | 5 | 4
2 | 5 | 1
3 | 5 | 2
4 | 9 | 1
5 | 9 | 4
6 | 2 | 1
7 | 2 | 4
8 | 4 | 1
修改
抱歉,我弄错了。 我想要brand_id和product_id的列表,这些列表由brand_id和product_id值相同的相同数量的用户使用。上表是相同的。
User A User B
brand_id | product_id brand_id | product_id
1 | 2 1 | 3
| 3 2
不同用户的相同数量的对...
User A has two pairs User B has two paris
brand_id 1 and product_id 2 brand_id 1 and product_id 3
brand_id 1 and product_id 3 brand_id 2 and product_id 3
结果应该是
brand_id product_id -> combination
1 2 -> 1
1 3 -> 2
2 3 -> 1
先谢谢。
答案 0 :(得分:1)
只需按用户加入两个表格,按品牌和产品分组,即可完成。
select product_id, brand_id, count(*)
from brands b
inner join product p on p.user_id = b.user_id
group by product_id, brand_id;
联接为每个用户 - 产品 - 品牌组合创建一条记录。然后通过产品和品牌分组,计算选择产品 - 品牌组合的用户。
这是一个SQL小提琴:http://sqlfiddle.com/#!6/f868a/2。
答案 1 :(得分:0)
使用以下查询
select product_id,brand_id , product_users as count from
(
select count(user_id) product_users, product_id from product_table
) a,
(
select count(user_id) brand_users, brand_id from brand_table
) b
where a.product_users = b.brand_users;