在MySQL中,我想合并来自优惠券,目标和访问表的表行。它们的关联方式是1张优惠券只能有1个目标。目标是网址和其他一些显示设置。一个目标可以有很多访问。
// coupons
couponId
couponName
// targets
targetId
url
fk_coupons_targets // foreign key
// visits
visitId
urlVisited
fk_targets_visits // foreign key
应根据匹配的visits.url进行计数,以统计给定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;
我不清楚如何连接总和值。我的第二个查询看起来就像将忽略总和,只是在访问中返回一堆匹配的行,这是不希望的。该查询实际上应如何编写?
答案 0 :(得分:-1)
尝试一下
select c.couponId,t.url,count(v.visitId)
from coupons c
join targets t on c.couponId=t.fk_coupons_targets
join visits v on t.url=v.urlVisited
group by c.couponId;