我有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放在该组中,我仍然会返回所有公司。
提前致谢。
答案 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日期 等...