2011-06-03 116 views
3

我在同一個數據庫的不同表中有多個select語句。我正在使用多個獨立的查詢,然後加載到我的數組和排序(再次,在查詢中排序後)。組合多個高級mysql select查詢的最佳方法

我想結合成一個聲明來加快結果並使「加載更多」更容易(見底部)。

每個查詢都使用SELECT,LEFT JOIN,WHERE和ORDER BY命令,這些命令對於每個表都不相同。

我可能不需要在每個語句中排序,但我希望最終結果最終由表示時間的字段(不一定是所有表中的相同字段名稱)排序。

我會想限制總的查詢結果爲數字,在我的案件100

我再通過結果和每行我測試使用一個循環,如果OBJECTNAME_ID(即; COMMENT_ID,事項標識,upload_id)isset然後LOAD_WHATEVER_OBJECT獲取該行並將數據推入數組。

因爲它是通過mysql加載的,所以我不必對數組進行排序。

在後面的應用程序中,我將通過跳過第一個100,200或任何頁面* 100來「加載更多」,並再次用相同的查詢限制100。

從數據庫將PREF看起來像「這個」最終的結果:

結果 - 從表中選擇的字段 - 字段進行排序上是最大的 結果 - 字段進行排序 - 從可能不同的表中選擇的字段在旁邊最大 結果 - 從可能不同的表表中選擇的字段 - 字段進行排序上是第三大 等,等

我看到很多更簡單的合併報表,但沒有很喜歡這一點。

任何幫助將非常感激。

+1

瞭解更多關於JOIN和UNION語法上的MySQL文檔。 – Rasika 2011-06-03 06:25:05

回答

2

最簡單的方法可能是這裏UNION(http://dev.mysql.com/doc/refman/5.0/en/union.html):

(SELECT a,b,c FROM t1) 
UNION 
(SELECT d AS a, e AS b, f AS c FROM t2) 
ORDER BY a DESC 
+0

謝謝! ..我雖然這將是更難的附加命令在它大聲笑。在這裏更新這個如何解決這個問題。看起來我可以使用參考來排序,太酷了。 – 2011-06-03 13:54:17

+0

表格和選項都有不同的列數。它對於每個表格都不相同。 – 2011-06-03 14:07:41

+0

你能舉個例子嗎?是否可以使用NULL值或空字符串填充缺失的列? 像SELECT ... NULL作爲NA_col1,「」作爲NA_col2 ... – iHaveacomputer 2011-06-07 03:53:57