从数据库中提取一些优惠券。每张优惠券都有一个包含优惠券所属商家id的merchantid列。
我正在尝试构建一个查询,它拉出5张优惠券,但我只想要每个商家1张优惠券。我不想要同一商家的多张优惠券。
我也有一些WHERE条件需要放在那里。这是我到目前为止所拥有的,它只拉动了每个商家1张优惠券,但它拉动的优惠券并没有最高的点击率:
SELECT C.couponid,C.fmtc_couponid,C.merchantid,
C.label,C.restrictions,C.coupon,C.link,
C.image,C.expire,C.unknown,C.clicks,M.name,
M.approved,M.homepageurl,M.logo_image,M.permalink
FROM tblCoupons C,tblMerchants M
WHERE C.merchantid=M.merchantid AND
C.begin < ".mktime()." AND
C.expire > ".mktime()." AND
M.display='1'
GROUP BY C.merchantid ORDER BY C.clicks DESC LIMIT 0,5
发布于 2011-07-12 09:33:07
我认为您需要的是从优惠券表中预先查询,按商家分组,然后重新加入。
select
PreQuery.merchantID,
C2.couponid,
C2.fmtc_couponid,
C2.merchantid,
C2.label,
C2.restrictions,
C2.coupon,
C2.link,
C2.image,
C2.expire,
C2.unknown,
C2.clicks,
M.name,
M.approved,
M.homepageurl,
M.logo_image,
M.permalink
from
( select c.merchantid,
max( c.clicks ) as HiClickCoupon
from
tblCoupons c
join tblMerchants M1
on PreQuery.MerchantID = M1.MerchantID
AND M1.DIsplay = '1'
where
c.begin < ".mktime()."
and c.expire > ".mktime()."
group by
c.merchantid
order by
max( c.Clicks ) DESC
limit
0, 5 ) PreQuery
join tblMerchants M
on PreQuery.MerchantID = M.MerchantID
join tblCoupons C2
on PreQuery.MerchantID = C2.MerchantID
AND PreQuery.HiClickCoupon = C2.Clicks
AND C2.begin < ".mktime()."
AND C2.expire > ".mktime()."
https://stackoverflow.com/questions/6658238
复制相似问题