我有一个查询需要执行以显示项目的搜索结果。需要发生什么,我需要通过“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