【发布时间】:2015-04-24 21:18:24
【问题描述】:
我已经使用我目前拥有的数据库结构创建了一个示例:
我的目标是获得一个数据库表,其中所有数据都已经在正确的位置,并以正确的顺序排序,然后输入到 jqGrid 中,最后应该如下所示:
Entity |OrderTime |City |ProductType |...
-------------------------------------------------------------------
AlexKlar | | |
SubPack |17:00 |London |
Mango | | |Fruit |
WelcomePack |15:00 |London |
Apple | |
Banana | | |Fruit |
AnnaKlar | | |
WelcomePack |16:00 |London |
Apple | | |Fruit |
JuliaKlar | | |
PremiumPack |18:00 |London |
Lychee | | |Fruit |
SubPack |18:30 |London |
Mango | | |Fruit |
WelcomePack |15:00 |London |
Apple | | |Fruit |
Banana | | |Fruit |
问题 1:将所有表合并到一个主表中以便为 jgGrid 定义 id/parents/level/leaf 的最有效方法是什么?由于并非所有级别都需要所有列的值,因此我必须为其分配一个空字符串 ''。我的代码目前是这样的:
SELECT
CONVERT(VARCHAR,PersonID) AS id,
0 AS level,
'false' AS isLeaf,
'null' AS parent,
FullName AS entity,
'' AS OrderTime,
'' AS City,
'' AS Active,
'' AS ProductType,
'' AS Price
from Persons
UNION ALL
SELECT
CONVERT(VARCHAR,PersonID) + '>' + CONVERT(VARCHAR,OrderID) AS id,
1 AS level,
'false' AS isLeaf,
CONVERT(VARCHAR,PersonID) AS parent,
OrderName AS entity,
COALESCE(CAST(OrderTime AS VARCHAR(5)),'') AS OrderTime,
City,
Active,
'' AS ProductType,
'' AS Price
from Orders
UNION ALL
SELECT
CONVERT(VARCHAR,per.PersonID) + '>' + CONVERT(VARCHAR,ord.OrderID) + '>' + CONVERT(VARCHAR,prod.ProductID) AS id,
2 AS level,
'true' AS isLeaf,
CONVERT(VARCHAR,per.PersonID) + '>' + CONVERT(VARCHAR,ord.OrderID) AS parent,
ProductName AS entity,
'' AS OrderTime,
'' AS City,
so.Completed AS Active,
ProductType,
COALESCE(CONVERT(VARCHAR,Price),'') AS Price
from SubmittedOrders so
INNER JOIN Orders ord ON ord.OrderID = so.OrderID
INNER JOIN Persons per ON per.PersonID = ord.PersonID
INNER JOIN Products prod ON prod.ProductID = so.ProductID
Order by id
问题2:在创建了我拥有的 4 个表的表联合后,我想对其进行排序,使其按字母顺序排列,但仅在它们自己的级别内(使其看起来像上图所示的表)。我想避免使用 jqGrid 内置排序功能 grid.jqGrid('sortGrid', 'importJob');在客户端,因为如果我有 5000 个订单/行,它真的很慢。
提前感谢您的帮助。
【问题讨论】:
标签: sql-server jqgrid