我目前正在使用一个网站并将数据从转盘保存到数据库中。 每个图像都有一个位置,链接,图像网址等。
查找所有信息:sqlfiddle.com/#!2/b3920b/2/0(感谢Ollie Jones)
所以de DB看起来有点像这样:
╔═══╦════════════╦═════════════╦═════════════╦═════════════╦═════════════╦═════════════╗
║id ║ element ║ position ║ title ║ url_link ║ url_jpg ║ date ║
╠═══╬════════════╬═════════════╬═════════════╬═════════════╬═════════════╬═════════════╣
║ 1 ║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 20-12-2013 ║
║ 2 ║ foo ║ 2 ║ title2 ║ url2 ║ jpg2 ║ 20-12-2013 ║
║ 3 ║ foo ║ 3 ║ title3 ║ url3 ║ jpg3 ║ 20-12-2013 ║
║ 4 ║ foo ║ 4 ║ title4 ║ url4 ║ jpg4 ║ 20-12-2013 ║
║ 5 ║ foo ║ 5 ║ title5 ║ url5 ║ jpg5 ║ 20-12-2013 ║
║ 6 ║ foo ║ 6 ║ title6 ║ url6 ║ jpg6 ║ 20-12-2013 ║
║ 7 ║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 21-12-2013 ║
║ 8 ║ foo ║ 2 ║ title2 ║ url2 ║ jpg2 ║ 21-12-2013 ║
║ 9 ║ foo ║ 3 ║ title3 ║ url3 ║ jpg3 ║ 21-12-2013 ║
║10 ║ foo ║ 4 ║ title4 ║ url4 ║ jpg4 ║ 21-12-2013 ║
║11 ║ foo ║ 5 ║ title5 ║ url5 ║ jpg5 ║ 21-12-2013 ║
║12 ║ foo ║ 6 ║ title6 ║ url6 ║ jpg6 ║ 21-12-2013 ║
║13 ║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 22-12-2013 ║
║14 ║ foo ║ 2 ║ title2 ║ url2 ║ jpg2 ║ 22-12-2013 ║
║15 ║ foo ║ 3 ║ title3 ║ url3 ║ jpg3 ║ 22-12-2013 ║
║16 ║ foo ║ 4 ║ title4 ║ url4 ║ jpg4 ║ 22-12-2013 ║
║17 ║ foo ║ 5 ║ title5 ║ url5 ║ jpg5 ║ 22-12-2013 ║
║18 ║ foo ║ 6 ║ title6 ║ url6 ║ jpg6 ║ 22-12-2013 ║
║.. ║ ... ║ ... ║ ... ║ ... ║ ... ║ ... ║
╚═══╩════════════╩═════════════╩═════════════╩═════════════╩═════════════╩═════════════╝
然后在我的报告中,我查询数据库,向我展示旋转木马中包含开始日期和结束日期的元素,如果jpg链接的位置,标题,网址发生了变化,那么它就有了向我展示任何范围...例如,之前的DB查询应该如下所示:
╔═════════╦═══════════╦═════════════╦═════════════╦═══════════╦══════════════════════════╗
║element ║ position ║ title ║ url_link ║ url_jpg ║ date ║
║═════════╬═══════════╬═════════════╬═════════════╬═══════════╬══════════════════════════╣
║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 20-12-2013 to 22-12-2013 ║
║ foo ║ 2 ║ title2 ║ url2 ║ jpg2 ║ 20-12-2013 to 22-12-2013 ║
║ foo ║ 3 ║ title3 ║ url3 ║ jpg3 ║ 20-12-2013 to 22-12-2013 ║
║ foo ║ 4 ║ title4 ║ url4 ║ jpg4 ║ 20-12-2013 to 22-12-2013 ║
║ foo ║ 5 ║ title5 ║ url5 ║ jpg5 ║ 20-12-2013 to 22-12-2013 ║
║ foo ║ 6 ║ title6 ║ url6 ║ jpg6 ║ 20-12-2013 to 22-12-2013 ║
╚═════════╩═══════════╩═════════════╩═════════════╩═══════════╩══════════════════════════╝
以上使用此查询:
mysql_query("
SELECT id, element, position, title, url_link, url_jpg,
(case when min(date) <> max(date)
then concat(min(date), ' to ', max(date))
else min(date) end) as date
FROM table
GROUP BY element, posistion, title, url_link, url_jpg
ORDER BY element, date ASC, position ASC
")
现在的问题是,当所有元素都改变但是,如下所示:
新数据库:
╔═══╦════════════╦═════════════╦═════════════╦═════════════╦═════════════╦═════════════╗
║id ║ element ║ position ║ title ║ url_link ║ url_jpg ║ date ║
╠═══╬════════════╬═════════════╬═════════════╬═════════════╬═════════════╬═════════════╣
║ 1 ║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 20-12-2013 ║
║ 2 ║ foo ║ 2 ║ title2 ║ url2 ║ jpg2 ║ 20-12-2013 ║
║ 3 ║ foo ║ 3 ║ title3 ║ url3 ║ jpg3 ║ 20-12-2013 ║
║ 4 ║ foo ║ 4 ║ title4 ║ url4 ║ jpg4 ║ 20-12-2013 ║
║ 5 ║ foo ║ 5 ║ title5 ║ url5 ║ jpg5 ║ 20-12-2013 ║
║ 6 ║ foo ║ 6 ║ title6 ║ url6 ║ jpg6 ║ 20-12-2013 ║
║ 7 ║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 21-12-2013 ║
║ 8 ║ foo ║ 2 ║ newtitle2 ║ url2 ║ jpg2 ║ 21-12-2013 ║
║ 9 ║ foo ║ 3 ║ newtitle3 ║ url3 ║ jpg3 ║ 21-12-2013 ║
║10 ║ foo ║ 4 ║ newtitle4 ║ url4 ║ jpg4 ║ 21-12-2013 ║
║11 ║ foo ║ 5 ║ newtitle5 ║ url5 ║ jpg5 ║ 21-12-2013 ║
║12 ║ foo ║ 6 ║ newtitle6 ║ url6 ║ jpg6 ║ 21-12-2013 ║
║13 ║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 22-12-2013 ║
║14 ║ foo ║ 2 ║ newtitle2 ║ url2 ║ jpg2 ║ 22-12-2013 ║
║15 ║ foo ║ 3 ║ newtitle3 ║ url3 ║ jpg3 ║ 22-12-2013 ║
║16 ║ foo ║ 4 ║ newtitle4 ║ url4 ║ jpg4 ║ 22-12-2013 ║
║17 ║ foo ║ 5 ║ newtitle5 ║ url5 ║ jpg5 ║ 22-12-2013 ║
║18 ║ foo ║ 6 ║ newtitle6 ║ url6 ║ jpg6 ║ 22-12-2013 ║
║.. ║ ... ║ ... ║ ... ║ ... ║ ... ║ ... ║
╚═══╩════════════╩═════════════╩═════════════╩═════════════╩═════════════╩═════════════╝
同样的查询会告诉我:
╔═════════╦═══════════╦═════════════╦═════════════╦═══════════╦═════════════╗
║element ║ position ║ title ║ url_link ║ url_jpg ║ date ║
║═════════╬═══════════╬═════════════╬═════════════╬═══════════╬═════════════╣
║ foo ║ 2 ║ title2 ║ url2 ║ jpg2 ║ 20-12-2013 ║
║ foo ║ 3 ║ title3 ║ url3 ║ jpg3 ║ 20-12-2013 ║
║ foo ║ 4 ║ title4 ║ url4 ║ jpg4 ║ 20-12-2013 ║
║ foo ║ 5 ║ title5 ║ url5 ║ jpg5 ║ 20-12-2013 ║
║ foo ║ 6 ║ title6 ║ url6 ║ jpg6 ║ 20-12-2013 ║
╚═════════╩═══════════╩═════════════╩═════════════╩═══════════╩═════════════╝
╔═════════╦═══════════╦═════════════╦═════════════╦═══════════╦══════════════════════════╗
║element ║ position ║ title ║ url_link ║ url_jpg ║ date ║
║═════════╬═══════════╬═════════════╬═════════════╬═══════════╬══════════════════════════╣
║ foo ║ 1 ║ title1 ║ url2 ║ jpg2 ║ 20-12-2013 to 22-12-2013 ║
╚═════════╩═══════════╩═════════════╩═════════════╩═══════════╩══════════════════════════╝
╔═════════╦═══════════╦═════════════╦═════════════╦═══════════╦══════════════════════════╗
║element ║ position ║ title ║ url_link ║ url_jpg ║ date ║
║═════════╬═══════════╬═════════════╬═════════════╬═══════════╬══════════════════════════╣
║ foo ║ 2 ║ title2 ║ url2 ║ jpg2 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 3 ║ title3 ║ url3 ║ jpg3 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 4 ║ title4 ║ url4 ║ jpg4 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 5 ║ title5 ║ url5 ║ jpg5 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 6 ║ title6 ║ url6 ║ jpg6 ║ 21-12-2013 to 22-12-2013 ║
╚═════════╩═══════════╩═════════════╩═════════════╩═══════════╩══════════════════════════╝
我希望它能告诉我这个:
╔═════════╦═══════════╦═════════════╦═════════════╦═══════════╦════════════╗
║element ║ position ║ title ║ url_link ║ url_jpg ║ date ║
║═════════╬═══════════╬═════════════╬═════════════╬═══════════╬════════════╣
║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 20-12-2013 ║
║ foo ║ 2 ║ title2 ║ url2 ║ jpg2 ║ 20-12-2013 ║
║ foo ║ 3 ║ title3 ║ url3 ║ jpg3 ║ 20-12-2013 ║
║ foo ║ 4 ║ title4 ║ url4 ║ jpg4 ║ 20-12-2013 ║
║ foo ║ 5 ║ title5 ║ url5 ║ jpg5 ║ 20-12-2013 ║
║ foo ║ 6 ║ title6 ║ url6 ║ jpg6 ║ 20-12-2013 ║
╚═════════╩═══════════╩═════════════╩═════════════╩═══════════╩════════════╝
╔═════════╦═══════════╦═════════════╦═════════════╦═══════════╦══════════════════════════╗
║element ║ position ║ title ║ url_link ║ url_jpg ║ date ║
║═════════╬═══════════╬═════════════╬═════════════╬═══════════╬══════════════════════════╣
║ foo ║ 1 ║ title1 ║ url1 ║ jpg1 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 2 ║ newtitle2 ║ url2 ║ jpg2 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 3 ║ newtitle3 ║ url3 ║ jpg3 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 4 ║ newtitle4 ║ url4 ║ jpg4 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 5 ║ newtitle5 ║ url5 ║ jpg5 ║ 21-12-2013 to 22-12-2013 ║
║ foo ║ 6 ║ newtitle6 ║ url6 ║ jpg6 ║ 21-12-2013 to 22-12-2013 ║
╚═════════╩═══════════╩═════════════╩═════════════╩═══════════╩══════════════════════════╝
(要将它们分成php文件中的表,我在日期更改时创建一个新表)
所以我不知道如何更改查询,因此带有title1的元素会分成两个表,因为GROUP日期发生了变化。 :(
希望很好解释,这真让我头疼。 提前谢谢你。
答案 0 :(得分:0)
我认为您遇到的问题是由于您的结果集日期列的ORDERING问题。我的小提琴(这里)使用实际的DATE值,而不是dd-mm-yyyy值,因为我们希望它们正确排序。 http://sqlfiddle.com/#!2/b3920b/4/0此外,我正在使用此
ORDER BY element, MIN(date), MAX(date), position ASC
请注意,第二个数据集的第1行,第7行,第13行将组合成一个结果行,日期范围为2013-12-20到2013-12-22。
你的SQL中有一个小错误..你不想
SELECT id, ....
因为你的GROUP BY中没有提到它。见这里:http://sqlfiddle.com/#!2/b3920b/3/0