Sql server “按父子关系排序”;“项目代码”-&引用;ItemReplacementCode";在一张桌子里
假设我们有产品的记录,其中列为Sql server “按父子关系排序”;“项目代码”-&引用;ItemReplacementCode";在一张桌子里,sql-server,hibernate,select,group-by,sql-order-by,Sql Server,Hibernate,Select,Group By,Sql Order By,假设我们有产品的记录,其中列为ItemCode和itemplacementcode。 因为我们谈论的是一张桌子: ItemCode不是主键 itemplacementcode不是外键 它们只是varchars列 我希望在select result中看到的是: id, productname, itemcode, replacementCode 99, dell ###, a1234X, null 10034, dell ###, 1233bX, a123
ItemCode
和itemplacementcode
。
因为我们谈论的是一张桌子:
不是主键ItemCode
不是外键itemplacementcode
id, productname, itemcode, replacementCode
99, dell ###, a1234X, null
10034, dell ###, 1233bX, a1234X
10024, dell ###, 1232X, 1233bX
95, dell ###, 999ws, null
96, sony ###, 327b, null
等等。请注意,itemCode
和replacementCode
不便于按字母顺序排序
您能否指导我如何选择产品,以便按照替换代码对其进行分组和订购(请注意,不要按标量分组)。
当然,我们谈论的是一种由一条sql语句检索的“亲属”的构建图,其中包含“孤儿”产品,这些产品没有替代品。
请不要犹豫要求澄清。
请参考类似的讨论
只有在不影响性能的情况下,我才愿意添加其他hibernate关系。我不是100%确定您在寻找什么,但这里有一些选项 仅按替换代码订购
SELECT id, productname, itemcode, replacementCode
FROM ItemTable
ORDER BY replacementCode
我看到替换代码中有空值。如果您想按项目订购,但如果有替换代码,请使用替换代码,请尝试此操作
SELECT ISNULL(replacementCode ,itemcode) AS NewItemCode ,id, productname
FROM ItemTable
ORDER BY ISNULL(replacementCode ,itemcode)
@理查德维维安:谢谢,我说“(请注意,不要按标量分组)”可能还没有引起足够的注意。我在结果中需要的是按替换代码订购的选定产品。我将在一分钟内尝试更新问题帖子。您使用的是SQL Server还是Hibernate?我的数据库引擎是MsSQL,它是Hibernate上使用xml映射实现的数据层。请注意,itemCode和replacementCode对于排序来说不是字母友好的。第二条sql语句我必须仔细阅读才能理解。谢谢。你能发布一个你希望看到的数据结果的样本吗?这可能有助于理解你在寻找什么。为什么不按字母顺序友好?我不知道如何正确回答这里的问题。原谅你的短处。这里是我的尝试:“你能发布一个你期望看到的数据结果的样本吗?”-请查看更新后的帖子问题。“为什么不按字母顺序友好?”替换代码将不会遵循明显的规则。假设没有像“T5替换T4”这样的规则,但它可能是“T5替换W150”。我想我的第二个选择会给你你想要的。听起来您想按ItemCode排序,但如果某个项目已被替换,则按该替换代码排序,而不是原始项目代码。在第2条语句中,运算符为NULL,只需将未提供的替换代码替换为ItemCode即可。语句并没有构建父子顺序。也许这个问题的标题会让人产生误解,所以人们一直在回答关于字母顺序的问题。