【发布时间】:2016-03-17 17:27:48
【问题描述】:
我的查询有问题。
select p.id, p.firstname, p.lastname , max(s.year) as 'Last Year', min(s.year) as 'First Year', c.name from pilot p
join country on country.sigla = p.country
join circuit c on c.country_id = country.sigla
join season s
on(p.id = s.pilot_id)
group by p.id, p.firstname, p.lastname, c.name
order by p.id
表试点
Id (Primary Key)
Name
Table Season
餐桌季节
Year (Primary key)
Pilot_id (Foreign Key)
餐桌国家
Sigla (Primary Key)
表电路
id (Primary Key)
name
飞行员表与季节和国家相关联。并且表格电路链接到国家。 我想为每个飞行员展示每条线路的最后一个和第一个电路,但问题是我有重复的结果。第一个结果显示了第一个电路,而副本显示了最后一个电路。我有 67 个结果,而我只想有 40 个(数据库中的飞行员总数)
【问题讨论】:
-
谁是“e”? (e.year)为什么需要你“季节”?从查询中删除“季节”。
-
表定义不包括查询中引用的某些列,例如
circuit.country_id,您将使用什么查询来查找给定飞行员的“第一”电路?还是找到“最后一个”电路?从显示的表定义中,区分它的唯一方法是使用id列、name列或两者的组合。似乎没有任何其他方式可以从circuit对行进行排序。看起来飞行员最多与一个国家有关,因此飞行员与与同一国家相关的每个电路有关。你如何订购电路
标签: sql sql-server database relational-database