从数据库中提取一些优惠券。每张优惠券都有一个商品列,其中包含优惠券所属商家的ID。
我正在尝试构建一个可以提取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
答案 0 :(得分:1)
我认为您需要的是从优惠券表中预先查询,由商家进行分组,然后重新加入。
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()."