通过进一步的表保持订单位置

时间:2016-08-30 10:20:34

标签: sql-server

有3个表格如下:

T_Artikel_T_Variation
------------------------------------
ID
FK_Variation_VariationAttribute_ID
FK_Artikel_ID
Position

T_Variation_VariationAttribute
------------------------------------
ID
FK_Variation_ID

T_Variation
------------------------------------
ID
Name

目标是根据T_VariationFK_Artikel_ID表中获取记录,但从T_Artikel_T_Variation开始按位置拍摄它们非常重要。

我收到了查询,但问题是当我首先从T_Artikel_T_Variation按位置获取记录,然后当我用FK_Variation_IDT_Variation_VariationAttribute获取记录时(在此表中{{1} }} 可以处于其他位置)因此,从FK_Variation_ID开始,我可以从T_Variation获得其他位置,而不是T_Variation

有没有办法保持排名顺序?

当前查询:

T_Artikel_T_Variation

2 个答案:

答案 0 :(得分:0)

我不知道我是否真的明白你需要什么,但是 - 这肯定! - ORDER BY 中的IN-clause ORDER BY无法帮助您。

SELECT应该应用于最外层ROW_NUMBER() OVER(...)(但您可能会考虑;WITH var_varattr (FK_Variation_ID) As ( SELECT FK_Variation_ID FROM T_Variation_VariationAttribute WHERE ID IN ( SELECT FK_Variation_VariationAttribute_ID FROM T_Artikel_T_Variation WHERE FK_Artikel_ID = 46 ) ) select v.Id, v.Name FROM T_Variation AS v INNER JOIN T_Variation_VariationAttribute AS va ON v.ID=va.FK_VariationID INNER JOIN T_Artikel_T_Variation AS a ON va.ID=a.FK_Variation_VariationAttribute_ID WHERE v.ID IN ( SELECT FK_Variation_ID from var_varattr ) ORDER BY a.Position ASC ...)

尝试一下:

[ { name: 'P',
graph: 
 Graph {
   _isDirected: true,
   _isMultigraph: true,
   // more properties
 }
} ]

答案 1 :(得分:0)

您可以尝试此查询:

SELECT  t.Id, 
        t.Name 
FROM T_Variation t
INNER JOIN T_Variation_VariationAttribute v
    ON t.ID = v.FK_Variation_ID 
INNER JOIN T_Artikel_T_Variation a
    ON v.ID = a.FK_Variation_VariationAttribute_ID 
        AND a.FK_Artikel_ID = 46 
ORDER BY a.Position ASC 

您将获得重复项,因为来自Position的同一行可能有多个T_Variation。所以这是一个问题,这个行必须如何排序多于一个Position