VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 730|回复: 5

怎样利用两个查询结果继续查询?

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-18 08:00:01 | 显示全部楼层 |阅读模式
oOracleConn.Open();
                string select;
                select = "select ymd,sum(stoptim) as sum ,devid "
                        +"from dev_bandata "
                        +"group by ymd,devid";
               
                OracleDataAdapter da = new OracleDataAdapter(select, oOracleConn);

                DataSet ds = new DataSet();
                System.Data.DataTable sum_table = new System.Data.DataTable(); //添加一个表sum_table
                da.Fill(ds, "sum_table");

                select = "select devid ,devname from dev_bandata ";
                da = new OracleDataAdapter(select, oOracleConn);
                System.Data.DataTable name_table = new System.Data.DataTable();
                da.Fill(ds, "name_table");

                select = "select ymd,sum,devname from sum_table,name_table where sum_table.devid=name_table.devid";
                da = ?????  //这里应该怎么写?
                System.Data.DataTable result_table = new System.Data.DataTable();
                da.Fill(ds, "result_table");

首先问问我这种思路是否可行?
我查了相关问题,好像可以用一条sql语句来完成,不过我觉得可读性不高。
我是新手,请多帮忙。
回复

使用道具 举报

0

主题

110

帖子

63.00

积分

新手上路

Rank: 1

积分
63.00
发表于 2020-4-24 06:45:01 | 显示全部楼层
TO:select = "select ymd,sum,devname from sum_table,name_table where sum_table.devid=name_table.devid";

楼主的目的是什么?

想对DataSet中的两个表进行联合查询?
回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-4-25 18:45:02 | 显示全部楼层
未测试,仅供参考!
select a.devname,b.ymd,b.sum from dev_bandata a,(select ymd,sum(stoptim) as sum,devid from dev_bandata group by ymd,devid) b where a.devid=b.devid
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-7-5 09:30:01 | 显示全部楼层

就是想对DataSet中的两个表进行联合查询。
而我又不太想用lb1514的方法。
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-7 23:45:01 | 显示全部楼层
//这样的t-sql一定是错的,因为sumtable和name_table在库中不存在
//你以前的工作是将数据集放在内存中,在运行web的服务器中
//可能和数据服务器都不在一台机器上了
select = "select ymd,sum,devname from sum_table,name_table where sum_table.devid=name_table.devid";
//所以你这样想直接再填充无论如何时都不可能成功
da = ????? //这里应该怎么写?
System.Data.DataTable result_table = new System.Data.DataTable();
da.Fill(ds, "result_table");
//如果一定想这样做,来让我们想想我们有的是什么,我们需要的是什么
//我们在web服务器上有两个dataset ,我们想要的是另一个table

可以从sum_table克隆一个结构,加入新的字段,然后将两个表的记录一条条插入
如果sum_table不会在后面被使用,那么可以直接给它新加一个字段,然后一条条更新记录
无论如何,这都不是一个好主意,好多orm支持关系映射,但我个人并不喜欢这样,关系型数据库的优点在于它是"关系型的"

首先问问我这种思路是否可行?
我查了相关问题,好像可以用一条sql语句来完成,不过我觉得可读性不高。
我是新手,请多帮忙。

///其实真的更好的解决办法是使用tans-sql直接体现它们的关系并解决

现在有两个结果集
select ymd,sum(stoptim) as sum ,devid
from dev_bandata
group by ymd,devid

select devid ,devname
from dev_bandata


看看两个表现在是什么关系
它们来自一个数据表
可能是一对一映射/一对多/多对一/多对多
从你的原文中也看不出关系
我们假设是一对一的
那么
简单的改一下

select ymd,sum(stoptim) as sum ,devid,devname
from dev_bandata
group by ymd,devid,devname
即可
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-7-10 14:45:01 | 显示全部楼层
写成存储过程就行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表