我有一個查詢需要執行以顯示項目的搜索結果。需要發生什麼,我需要通過「horsesActiveDate」對結果進行排序,這適用於除adtypesID = 7的任何廣告以外的所有廣告。這些結果按日期排序,但必須始終在所有其他廣告之後結果。MYSQL - 在一個查詢中合併兩個結果
因此,我會在結果集中將所有廣告按活動日期和adtypesID!= 7進行排序。之後,我需要按活動日期對所有adtypesID = 7進行排序,並將其附加到所有結果。
我希望把它放在一個查詢中,而不是兩個,並將它們在PHP中附加在一起。代碼編寫的方式,我必須找到一種方法,在一個查詢中獲取所有代碼。
所以這裏是我的原始查詢,它已經很好的工作,直到我不得不廣告adtypesid = 7具有不同的排序要求。
這是現在存在的查詢不考慮用於排序的adtypesID。
SELECT
horses.horsesID,
horsesDescription,
horsesActiveDate,
adtypesID,
states.statesName,
horses_images.himagesPath
FROM horses
LEFT JOIN states ON horses.statesID = states.statesID
LEFT JOIN horses_images ON horses_images.himagesDefault = 1 AND horses_images.horsesID = horses.horsesID AND horses_images.himagesPath != ''
WHERE
horses.horsesStud = 0
AND horses.horsesSold = 0
AND horses.horsesID IN
(
SELECT DISTINCT horses.horsesID
FROM horses
LEFT JOIN horses_featured ON horses_featured.horsesID = horses.horsesID
WHERE horses.horsesActive = 1
)
ORDER BY adtypesID, horses.horsesActiveDate DESC
我首先想到的是做兩個查詢,其中一個看起來所有不包含adtypesID = 7和整理那些作爲查詢呢,然後運行第二個查詢只查找adtypesID =這些廣告的廣告7並按日期排序。然後拿這兩個結果並將它們追加到對方。由於我需要將這一切都彙總到一個查詢中,因此我無法使用php函數來執行此操作。
有沒有辦法在mysql中一個接一個地合併兩個查詢結果?有沒有更好的方法來運行這個查詢來完成這個排序?
理想的結果將是如下(我修改了列名,這樣他們就可以更短):
ID | Description | ActiveDate | adtypesID | statesName | himagesPath
___________________________________________________________________________
3 | Ad Text | 06-01-2010 | 3 | OK | image.jpg
2 | Ad Text | 05-31-2010 | 2 | LA | image1.jpg
9 | Ad Text | 03-01-2010 | 4 | OK | image3.jpg
6 | Ad Text | 06-01-2010 | 7 | OK | image5.jpg
6 | Ad Text | 05-01-2010 | 7 | OK | image5.jpg
6 | Ad Text | 04-01-2010 | 7 | OK | image5.jpg
可以提供將不勝感激任何幫助!
謝謝你們兩位幫助我。我曾嘗試過這樣的事情,但一直在犯錯誤。這工作就像一個魅力!非常感謝你的幫助。 – Chad 2010-06-30 17:53:42