我搜索了包含日期的文章。在MySQL中是:
Article:
id | title
1 | first
2 | second
3 | third
4 | fourth
DatesArticle:
id | article_id | from | to
1 | 1 | 10-10-2010 | 11-11-2010
2 | 2 | 11-10-2010 | 12-12-2010
3 | 1 | 13-12-2010 | 12-01-2012
4 | 3 | 11-11-2012 | 12-12-2012
5 | 4 | 02-02-2013 | 02-02-2014
我希望获得所有文章的日期,并按可用性对其进行排序。
例如我想通过日期从2011年12月10日到2012年12月1日期间获得所有文章和排序
这应该归还我:
这可能是SQL或SQL和PHP吗?如果是,怎么样?
答案 0 :(得分:3)
使用CASE子句,如:
SELECT * FROM DatesArticle
ORDER BY CASE
WHEN id=3 AND CURRENT_DATE()<=from and to < CURRENT_DATE()>=to THEN 1
WHEN <condition_2> THEN 2
etc...
ELSE <any other condition>
END
不是说上面的内容会起作用,但它会给你和想法。如果您添加了您尝试过的查询示例或者如何构建where子句,那么这将有助于更好地回答。
答案 1 :(得分:1)
我的想法是当它的id = 3赋值1时,如果id = 4赋值2,任何其他值赋值3,之后按照你指定的数字制作where条件和顺序。
试试这个:
select *,
case when t1.id=3 then 1 when t1.id=4 then 2 else 3 end as t
from article as t1
join DatesArticle as t2
on t1.id=t2.id
where CURRENT_DATE()<=from
and to < CURRENT_DATE()
order by t
答案 2 :(得分:1)
您必须先加入表格才能访问文章的数据。
然后按顺序排序(如果在给定范围内有日期)。
SELECT title
FROM Article JOIN DatesArticle
ON (Article.id = DatesArticle.id)
ORDER BY DatesArticle.from > LastDate AND DatesArticle.to < FirstDate DESC;
(我从未在逻辑分类中获得ASC和DESC - 尝试看看会发生什么)