Sql server 可以在视图中使用Order By
我正试图订购一个名为ListModePays的视图。以下是我在SQL中的观点Sql server 可以在视图中使用Order By,sql-server,Sql Server,我正试图订购一个名为ListModePays的视图。以下是我在SQL中的观点 SELECT paiementEtranger.pays.nomPays, paiementEtranger.mode.pays, [... other columns ...] paiementEtranger.choixMode.hierarchie FROM paiementEtranger.choixMode INNER JOIN paiemen
SELECT
paiementEtranger.pays.nomPays,
paiementEtranger.mode.pays,
[... other columns ...]
paiementEtranger.choixMode.hierarchie
FROM
paiementEtranger.choixMode
INNER JOIN paiementEtranger.mode
ON paiementEtranger.choixMode.id = paiementEtranger.mode.mode
INNER JOIN paiementEtranger.pays
ON paiementEtranger.mode.pays = paiementEtranger.pays.id
WHERE
(paiementEtranger.pays.supprime = 0) AND
(paiementEtranger.mode.supprime = 0)
然后我尝试使用这个查询按视图的一部分排序
SELECT * FROM paiementEtranger.listeModePays
WHERE pays="xxx" ORDER BY choixMode.hierarchie
当我在查询中添加ORDER BY choixMode.Hierarchy时,我得到一个多部分标识符choixMode.Hierarchy无法绑定错误。有人能帮忙吗 您的问题只是显示了一个SELECT语句,但您将其描述为一个视图-因此假设定义的语句是一个视图,您不需要表名-该视图有一个名为hierachie的列,该列来自choixMode表 所以,你只是想
SELECT * FROM paiementEtranger.listeModePays
WHERE pays="xxx"
ORDER BY hierarchie
您的问题只是显示了一个SELECT语句,但您将其描述为一个视图-因此假设定义的语句是一个视图,您不需要表名-该视图有一个名为hierachie的列,该列来自choixMode表 所以,你只是想
SELECT * FROM paiementEtranger.listeModePays
WHERE pays="xxx"
ORDER BY hierarchie
您仅从ListModePays中进行选择,因此无法使用choixMode中的内容进行订购-因此,请从此处删除choixMode,因为该列应具有与视图中的列相同的名称choixMode.Hierarchy,只需在select no choixMode中按层次结构排序-如果从viewSuggestion中选择,则该表没有任何意义。建议:在SQL中使用别名:…从LongTableName t中选择,然后可以在查询的其余部分使用t而不是LongTableName。这将稍微注意命名,使事情更清楚。@jamices s/Table/View/makes nodifference@Richard-哦,我以为你说的是为了从视图中选择。但是您完全正确,对于编写长select语句,您只从ListModePays中选择,因此您不能使用choixMode中的内容进行排序-因此,从那里删除choixMode,它应该可以工作,因为该列应具有与视图中的列相同的名称choixMode.Hierarchy,只需在select no choixMode中按层次结构排序-如果从viewSuggestion中选择,则该表没有任何意义。建议:在SQL中使用别名:…从LongTableName t中选择,然后可以在查询的其余部分使用t而不是LongTableName。这将稍微注意命名,使事情更清楚。@jamices s/Table/View/makes nodifference@Richard-哦,我以为你说的是为了从视图中选择。但是你绝对正确,因为你写了一个很长的select语句