无法弄清楚如何制作这个Group By子句

时间:2014-05-06 19:20:37

标签: sql sql-server

我有2张桌子公司和汽车。

Company: 
    CompanyId,
    CarId,
    Inative: 1 or 0.

Car:
   CarId,
   Plate.

问题是:  在同一个月,一辆汽车可以租给一家以上的公司,我只需要带上最后一家租来的公司。

SELECT CompanyId
from Company
where
-- Some Business Rules
GroupBy CompanyId
-- I Need to bring only the CompanyId on this query.
-- The company may be inative, but if more than one company used the same car I must return only the last company.

我无法弄清楚我是如何写这个GroupBy条款的。因为如果我将CarId放在该组中,我仍然会返回所有公司。

提前致谢。

3 个答案:

答案 0 :(得分:0)

在主要查询中,您不一定需要一个分组。

假设日期值是唯一的(即同一天的同一辆车不能出租两次),您可以使用以下条款执行此操作:

...
WHERE date = (SELECT MAX(date) FROM ... )

答案 1 :(得分:0)

参见:SELECT * FROM t1 LEFT JOIN(t2,t3,t4)ON(t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c) http://dev.mysql.com/doc/refman/5.0/en/join.html

答案 2 :(得分:0)

你的案子:

SELECT CompanyId
    from Company
WHERE
    -- Some Business Rules
ORDER BY CompanyId DESC 
LIMIT 1

但是因为我不好意思你必须首先规范你的数据库。 应该有3个表: 公司, 汽车, Car_to_company( id Serial PK, id_car整数FK, id_company整数FK, date_from日期 等...