【发布时间】:2026-01-11 07:15:01
【问题描述】:
在 MySQL 中,我想组合来自优惠券、目标和访问表的表行。它们的关联方式是 1 个优惠券只能有 1 个目标。目标是 url 和其他一些显示设置。一个目标可以有很多次访问。
// coupons
couponId
couponName
// targets
targetId
url
fk_coupons_targets // foreign key
// visits
visitId
urlVisited
fk_targets_visits // foreign key
应根据匹配的 visit.urlVisited 行进行计数,以统计给定 target.url 收到的访问次数。
预期的查询应该有一条记录,可以最终输出到这样的表中:
couponId: 1
targetUrl: example.com/page1
number of visits: 3
目前我不确定这是否需要“求和”查询和“加入”查询,或者它们是否可以或应该一起完成。这是我目前所拥有的。
// select every visit record and group a numeric count of
// records by same url value (in visits table)
select count(*) from visits
group by urlVisited;
// left join all coupon ids by matching foreign key in target
// table. Then inner join all summed visits by matching url in
// targets table
select * from coupons c
left join targets t on t.fk_targets_coupons = c.couponId
inner join visits v on v.urlVisited = t.url;
我不清楚如何连接总和值。我的第二个查询看起来会忽略总和,并在访问中返回一堆不希望的匹配行。这个查询实际上应该如何编写?
【问题讨论】:
-
请描述表之间的外键链接。目标表中哪个字段对应优惠券表中的couponId字段?连接访问的字段也是目标表