SELECT p.*
FROM Products p
LEFT JOIN offertran ot
ON p.prod_id = ot.prod_id
LEFT JOIN Offers o
ON ot.offer_id = o.id
AND o.dF<=3
AND o.dt>=3
ORDER BY o.id DESC,
p.prod_id ASC
LIMIT 20
Please check the output in fiddle
我想要现有的条件,以及下面列出的一些附加条件:
todaysDate - p.pdate less than 30 days
p.pre != ''
p.price ==0
prod_id DESC
我希望所有人都能在这个现有查询中添加这5个点
我希望你遇到问题。我需要立即回复。 提前致谢
答案 0 :(得分:1)
放手一搏:
SELECT p.*, o.id
FROM Products p
LEFT JOIN offertran ot
ON p.prod_id = ot.prod_id
LEFT JOIN Offers o
ON ot.offer_id = o.id
AND o.dF<=3
AND o.dt>=3
ORDER BY o.id DESC,
case when p.pDate > curdate()-interval 30 day then p.pDate else '1970-01-01' end desc,
case when p.pre != '' then 1 else 0 end desc,
p.price asc,p.prod_id DESC
LIMIT 20;
我有点不清楚你在第2点的意思:
您希望结果日期排序为DESC
还是ASC
?那些日期超过30天的行会发生什么?排除?进入下一个排序级别?
我已经猜到了你的意思。如果我误解了,我相信你可以使用查询。
答案 1 :(得分:0)
你只需要添加WHERE条件......
SELECT p.*, o.id
FROM Products p
LEFT JOIN offertran ot
ON p.prod_id = ot.prod_id
LEFT JOIN Offers o
ON ot.offer_id = o.id
AND o.dF<=3
AND o.dt>=3
WHERE datediff(curdate(),p.pdate)<30
AND p.pre <> ''
AND p.price = 0
ORDER BY o.id DESC,
p.prod_id ASC,
prod_id DESC
LIMIT 20