我有一个这样的Datagridview:
Model day1 day2 day3
car 1 2 4
bike 2 3 5
ship 6 1 7
然后我将其保存在我的数据库表中,如下所示:
date model qty id
day1 car 1 1
day2 car 2 2
day3 car 4 3
day1 bike 2 4
day2 bike 3 5
day3 bike 5 6
day1 ship 6 7
day2 ship 1 8
day3 ship 7 9
然后使用此查询:
Select Min(id) As id,model From table Group By model order by id
我获得的模型列表与在datagridview中获得模型的顺序相同:
car
bike
ship
当我在表中保存两个具有相同名称的模型然后执行查询时,问题就来了,我希望得到这个:
1 car
2 bike
3 ship
4 car
但是我得到了这个:
1 car
2 bike
3 ship
当前设计的第二个问题是,如果我设法以某种方式在datagrid视图中检索列表:
car
bike
ship
car
即时消息我怎么知道哪些来自第一个“汽车”,哪些来自最后一个“汽车”,所以我可以再次将它们放回datagridview。
在简历中,我想以保存数据时的顺序显示在数据网格中,但我不知道问题出在表的设计还是查询中。
示例:
将其保存在我的表格中,然后执行查询以获取相同格式的相同信息:
Model day1 day2 day3
car 1 2 4
bike 2 3 5
ship 6 1 7
car 1 2 4
答案 0 :(得分:1)
问题是您的查询,您正在按model
分组
这意味着它将获得该型号所有汽车的最小Id,因此您有两次汽车,但仅显示一次,因为它将model
汽车的所有记录分组并选择了最小Id,即1 >
尝试一下:
Select Count(id) As ModelCount,model From table Group By model order by id
在具有四辆汽车的数据集上,您会发现它将返回以下内容:
ModelCount | model
2 | car
1 | bike
1 | ship
答案 1 :(得分:0)
根据您的描述,这是一个“孤岛”问题。实际上,这是一个数据表示问题。为什么要用单个ID而不是行ID和列ID存储数据?
鉴于对数据进行排序的方式,您可以减去序列以识别组。然后,您可以group by
并获取原始行:
select model
from (select t.*, row_number() over (partition by model order by id) as seqnum
from t
) t
group by model, (id - seqnum)
order by min(id);
但是让我强调一下,如果您想要行/列信息,那么那就是您应该存储在数据库中的内容。