- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有如下的数据库表。
id, bungalow_name, type, address, featured
平房可以在主页上展示。如果平房有特色,featured
列的值为 1
。我在表中有 50 间平房,并且在给定时间有 5-7 间平房。
假设特色洋房名称如下。
bungalow 1, bungalow 2, bungalow 3, .........., bungalow 6
我想做的是每天在主页上显示一个特色平房。我想每个月都像下面这样循环。鉴于我不想为每个页面加载随机显示一个平房。我想每天展示一间平房。
today -> bungalow 1
tomorrow -> bungalow 2
day after tomorrow -> bungalow 3
...
After bungalow 6, bungalow 1 is shown on the next day.
我该怎么做?甚至可以使用 SQL/PHP 吗?
最佳答案
您可以使用这个 MySQL 查询:
SELECT *
FROM Bungalows
WHERE id = (
SELECT b1.id
FROM
Bungalows b1 LEFT JOIN Bungalows b2
ON b1.id>b2.id AND b2.featured=1
WHERE
b1.featured=1
GROUP BY
b1.id
HAVING
COUNT(b2.id) = (SELECT
DATEDIFF(CURDATE(), '2013-05-06') MOD
(SELECT COUNT(*) FROM Bungalows WHERE Featured=1))
)
请参阅 fiddle here . '2013-05-06'是要开始展示第一间特色洋房的日子。它们将按 ID 顺序显示,从“2013-05-06”开始。
编辑
以下查询将返回自 2013 年 5 月 6 日以来经过的天数:
SELECT DATEDIFF(CURDATE(), '2013-05-06')
MOD 函数将返回经过天数除以特色行数的整数余数:
SELECT DATEDIFF(CURDATE(), '2013-05-06') MOD
(SELECT COUNT(*) FROM Bungalows WHERE Featured=1)
如果有 6 个特色平房,它会在第一天返回 0,第二天返回 1,2,3,4,5,然后再次返回 0,1,2...。
MySQL 没有返回 RANK(行数)的函数,因此您必须以某种方式模拟它。我是这样模拟的:
SELECT b1.id, COUNT(b2.id)
FROM
Bungalows b1 LEFT JOIN Bungalows b2
ON b1.id>b2.id AND b2.featured=1
WHERE
b1.featured=1
GROUP BY
b1.id
我正在加入 Bungalows 表。平房 ID 的排名是 ID 小于该 ID 的平房的数量(因此连接 b1.id>b2.id)。
然后我只选择具有上述函数返回的 RANK 的行:
拥有 计数(b2.id)=(选择 DATEDIFF(CURDATE(), '2013-05-06') MOD (SELECT COUNT(*) FROM Bungalows WHERE Featured=1))
如果你使用 MySQL,我的初始查询可以简化为:
SELECT b1.*
FROM
Bungalows b1 LEFT JOIN Bungalows b2
ON b1.id>b2.id AND b2.featured=1
WHERE
b1.featured=1
GROUP BY
b1.id
HAVING
COUNT(b2.id) = (SELECT
DATEDIFF(CURDATE(), '2013-05-06') MOD
(SELECT COUNT(*) FROM Bungalows WHERE Featured=1))
关于php - 显示数据库中的特色项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16371256/
嗯,我的问题是,我想存储某种产品在他们自己的表中,并且从这些产品中我想选择一些到特色/强调产品表,它将存储每个表中所选行的 ID,以在网站的主页上显示这些特色产品。 从表中选择特色产品后,我想自己制定
您好,我正在与 bigcommerce 合作,我希望在每个类别页面上获得以下风格的分割 本质上是制作类别版本; %%Panel.HomeFeaturedProducts%% %%Panel.SideT
在这个网站上http://rwl.rwlwater.com/我有一个小问题...我添加了 overflow: hidden 到特色 slider div,如果启用了 javascript 或用户的互联
我用VB.NET和MySQL作为数据库创建了一个咖啡销售系统。 在该系统中,用户可以更新自己的信息,例如名字、姓氏、BOD 等。 但是,多个用户当前可能会同时编辑同一数据集,这是我需要防止的。 示例:
在这里http://jsfiddle.net/comparebest/yBcKk/6/我有一个 jQuery slider 和两个 Div - DIV ONE 和 DIV TWO。 有没有办法让我自动
我是一名优秀的程序员,十分优秀!