SQL查询需要一些帮助

时间:2010-06-07 11:27:24

标签: mysql

我需要一些MySQL查询的帮助。我有两张桌子,一张有优惠,另一张有状态。要约可以具有一种或多种状态。我想做的是获得所有优惠及其最新状态。对于每个状态,都有一个名为'added'的表字段,可用于排序。

我知道这可以通过两个查询轻松完成,但我需要只使用一个查询,因为我还必须在项目的后期应用一些过滤器。

这是我的设置:

CREATE TABLE `test`.`offers` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`client` TEXT NOT NULL ,
`products` TEXT NOT NULL ,
`contact` TEXT NOT NULL
) ENGINE = MYISAM ;

CREATE TABLE `statuses` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`offer_id` int(11) NOT NULL,
`options` text NOT NULL,
`deadline` date NOT NULL,
`added` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

2 个答案:

答案 0 :(得分:2)

应该工作但不是非常优化的imho:

 SELECT *
 FROM offers
 INNER JOIN statuses ON (statuses.offer_id = offers.id
     AND statuses.id = 
          (SELECT allStatuses.id
          FROM statuses allStatuses 
          WHERE allStatuses.offer_id = offers.id
          ORDER BY allStatuses.added DESC LIMIT 1))

答案 1 :(得分:0)

试试这个:

SELECT 
o.*
FROM offers o
INNER JOIN statuses s ON o.id = s.offer_id
ORDER BY s.added
LIMIT 1