我有3张桌子
News(id, year_id, month_id, title, description)
其中year_id和month_id是表中的外键
years(id,...)
和
months(id,...)
分别。
2014 - 2015 - 2016 - 2017
一月
二月
你可以得到一个想法,首先,我想展示全年的名单(2013年,2014年,2015年),我成功地做到了。
现在我希望在年份列表之下,新闻必须根据月份分组显示(例如,所有1月份的新闻以及#34; 1月和#34;标题等等到2014年12月及以后同样,根据2015年的月份等同样完整的所有新闻集......等等。
我只是想知道是否有任何方法可以通过查询从SQL连接或组中获取所需的结果 或者我将不得不使用编码和简单地从表中获取所有记录而不需要任何查询来管理这100%。
我在谷歌搜索过这个但没有得到解决方案。
只需要一点关于这个......
答案 0 :(得分:0)
我可能对CakePHP
一无所知,我一直想知道为什么你会在month
和year
ID' s中分别使用单独的表... 39; ve在评论中询问你并不介意回复。
无论如何,如果你想保留你的数据库结构,只需使用:
SELECT
news.title,
months.name,
months.day,
years.year
FROM news
JOIN months ON months.id = news.month_id
JOIN years ON years.id = news.year_id
ORDER BY
months.month ASC,
years.year ASC
我认为这应该做(没有明确检查是否有任何错误但是......这就是这个想法)。
由于我们未使用任何aggregate function
,您无法进行分组。
要注意我刚刚接受了years
和months
的列,因为我不知道你是如何在id
之外的那些表中命名其他列的。猜测它只是一个index
,但您可以根据需要更换它们
即使我建议删除你的months
和years
表,只要存储月份和年份数,如果你真的想要在News
表中,因为你总能输出一个PHP中的月份名称。