簡體   English   中英

MySQL查詢元素組以日期分隔

[英]Mysql query element groups separated by dates

目前,我正在瀏覽一個網站,並將輪播中的所有圖像保存到數據庫。 每個圖片都有位置,鏈接,圖片網址等。

找到所有信息: 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鏈接的位置,標題,URL發生了變化,則它不必告訴我任何范圍...例如,之前的數據庫查詢應如下所示:

 ╔═════════╦═══════════╦═════════════╦═════════════╦═══════════╦══════════════════════════╗
 ║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文件中的表,當日期更改時,我創建了一個新表)

因此,我不知道如何更改查詢,因為GROUP日期發生了變化,因此帶有title1的元素分成了兩個表。 :(

希望能很好地解釋,這確實讓我頭疼。 先感謝您。

我相信您看到的問題是由於結果集的日期列的訂購問題引起的。 我的小提琴(此處)使用實際的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM