SQL: 使用多个表和一个游标创建视图

SQL: Create view using multiple tables and a cursor

我有两个 table:'pc' 和 'results'。 table 'results' 包含每台电脑的这么多结果。 我需要创建包含所有 pc 列和每台 pc 的最后结果的视图。 我试过了,但没用。

select *
from pc,resultat where pc.code_pc=result.code_pc
order by code_resultat DESC limit 3

我必须使用游标吗?如果是,怎么做?

编辑:PC ID_pc name x y 1 Station1 1 1 2 Station2 2 2

结果table:

code_rslt  ID_pc  parametre  value  date
1           1     ph         6      15/06/2015
2           2     ph         6.3    15/06/2015
3           1     ph         6.6    16/06/2015
4           2     ph         6.2    16/06/2015

我需要一个这样的新人

ID_pc  name     x    y code_rslt  parametre  value  date
1      Station1 1    1     3        ph        6.6   16/06/2015
2      Station2 2    2     4        ph        6.2   16/06/2015

你可以这样做:

select r.id_pc, p.name, p.x, p.y, r.code_rslt, r.parametre, r.value, r.date
from (
    -- Get the max result per PC
    select max(code_rslt) as code_rslt
    from result
    group by id_pc
) maxPerId
inner join result r on maxPerId.code_rslt = r.code_rslt -- join maxPerId onto result table, to only include the maximum results
inner join pc p on r.id_pc = p.id_pc -- join on PC to get the PC information for the max results.

我不清楚 limit 3 在您的示例查询中的用途,因为在您的实际问题中没有提到任何类似的东西 - 希望这是您需要的东西。

我想你要找的是这样的:

Select p.*,r.*
from pc p
    inner join 
    Results r 
    on p.ID_pc = r.ID_pc
Where r.Code_reslt = (Select MAX(code_rslt) from results where ID_pc = p.ID_PC)

您可以使用以下示例查询简单地解决它:

select t.ID_pc, t.name, t.x, t.y, t.code_rslt, t.parametre, t.value, t.date from 
(
    select p.ID_pc, p.name, p.x, p.y, r.code_rslt, r.parametre, r.value, r.date from pc p 
    left join result r on r.ID_pc=p.ID_pc order by date desc
) t 
group by t.ID_pc

注意:如果 PC 没有结果,则 returns 该行(例如 station3)没有任何选择的结果,这意味着列 code_rstl,参数,的值。 .. 将为空。

在此查询中,默认情况下 'group by' 语句正在查找最前面的一条记录(在本例中为每台 PC 的最后结果),因此您无需调用 "max" SQL函数。