2011-12-20 144 views
2

讓我解釋一下我正在嘗試做什麼。首先,這裏是我的結果的預覽至今:MySQL將查詢合併爲一個

enter image description here

我的查詢:

SELECT slides.name as slide, filename, time, sort_id 
FROM `slide_sort` 
INNER JOIN slides 
    ON slide_sort.slide_id = slides.id 
WHERE slide_sort.user_id = 1 

所以每一張幻燈片是已經創建了一個頁面,但每個用戶將能夠指定在該頁面上停留多久以及下一個「幻燈片」是什麼。

所以HTML看起來像這樣:(dashboard.php)

<meta http-equiv="refresh" content="40;url=did-you-know.php"> 

現在它是硬編碼的,但我希望能夠從數據庫中拉出。


所以在dashboard.php文件,我可以在像上面有東西:$currentSlide = "Dashboard";和方法,我可以添加到查詢AND slide = $currentSlide所以這種方式,我可以看到的時間是在40秒鐘幻燈片,所以我可以堅持到content="$time"。但我的問題是,我怎麼可以添加其他查詢以獲取下sort_id所以sort_id + 1和獲取文件名,所以我會準備好以下信息:

幻燈片 - 時間 - next_filename

儀表板 - 40 - 做 - 你 - know.php


,但我也需要看它是否是最後sort_id,如果是,那麼下一個幻燈片需要在#1重新開始。

這是否有意義?

如果有人能幫助我走向正確的方向,我會非常感激。

謝謝!

回答

1

你可以用這樣的檢索下一個排序ID:

SELECT slides.name as slide, filename, time, sort_id 
FROM `slide_sort` 
INNER JOIN slides 
ON slide_sort.slide_id = slides.id 
WHERE slide_sort.user_id = 1 and slide_sort.sort_id = ($sort_id + 1) 

你可以用這樣的檢索最後排序ID:

SELECT sort_id 
FROM `slide_sort` 
INNER JOIN slides 
ON slide_sort.slide_id = slides.id 
WHERE slide_sort.user_id = 1 order by sort_id desc limit 1 

您可以檢查是否是這樣的最後滑動這樣的事情:

if ($sort_id == $last_sort_id) 

如果是,您可以檢索第一個排序id記錄d:

SELECT slides.name as slide, filename, time, sort_id 
FROM `slide_sort` 
INNER JOIN slides 
ON slide_sort.slide_id = slides.id 
WHERE slide_sort.user_id = 1 order by sort_id ASC limit 1 
+1

一張ID往往是不'current + 1',但是當前一個的最小ID> – zerkms 2011-12-20 21:46:58

+0

'$ sort_id + 1'假定序列總是連續的。你應該說'slide_sort.sort_id> $ sort_id',然後是'LIMIT 1'。要檢索最後一個sort_id,你可以使用'MAX(sort_id)','MIN(sort_id)'來獲取第一個。 – 2011-12-20 21:47:10

+0

@zerkms:OP似乎聲明我們可以假設當前爲+1(「我怎麼能添加另一個查詢來獲取下一個sort_id,以便sort_id + 1」)。 – ZFA 2011-12-20 21:53:40

0

你可以限制你的查詢結果只有2行,包括當前幻燈片。這樣,您就可以將幻燈片重定向到以及下一張幻燈片。當然,你仍然需要迭代或使用固定的索引,因爲你需要使用多行。而且你需要檢查你是否真的獲得了2行,以確定下一張幻燈片是否仍然可用。

也就是說,我推薦的是使用您當前的查詢檢索完整的幻燈片集,並遍歷它以找到您需要的內容。因爲...

  1. 這是一個簡單的查詢和mysql喜歡簡單的查詢。派生表和子查詢類似於減慢查詢速度,並且您不希望這樣。即使它看起來不成熟的優化。
  2. 數據集不太可能是非常大的,和O(N)交易算法很便宜
  3. 它建立
  4. 您能夠在整個幻燈片內提示導航的利益