我有两个表,其关系表示在第三个n:m表中。让我们称他们为Person,Workgroup和PersonWorkgroups。我有查询返回多个人,如“选择所有具有特定名称的人”。另外我想拥有所有相关的工作组。最后,我希望有一个DataSet填充数据,我可以迭代客户并获得相关的订单。
有人为将这样的结构放入DataSet的最简单方法有一个很好的例子吗?我宁愿在没有任何类型记录集,图形编辑器的纯代码中完成它......
欢呼声, Achim的
答案 0 :(得分:0)
我真的建议使用LINQ to XML,因为我认为这是处理关系数据库的一种很棒的方法。
如果您只是想运行查询并获得DataSet
,那么您是否只能在查询中建立联合:select all personinfo, orderinfo from persons P, orders O where P.personno = O.orderno having a certain name
?
然后,您将获得一个DataSet
,每个订单有一行,并且链接到该订单的人员信息附加到每一行。
答案 1 :(得分:0)
不确定您的意思是DataTable还是数据集。如果执行以下查询:
select customer.customerid, customername, orderid, orderdate, orderamount
from customer inner join orders
on customer.customerid = orders.customerid and customer.customerid = {your id here passed as a parameter}
通过Command对象,结果可以放在DataTable中。如果在一个命令中执行以下两个查询,则可以将结果放在DataSet中以进行客户端处理。您可以使用ADO.NET定义客户端关系。
select customerid, customername from customer;
select orderid, orderdate, customerid, orderamount from orders
返回两个表,并使用DataAdapter.Fill()填充数据集。
DataTable方法可能比DataSet方法“更简单”,但它实际上取决于您的应用程序的要求。阅读Command,DataAdapter,DataTable和DataSet对象。使用ADO.NET,您可以通过多种方式解决问题。
由于问题也标记为TSQL:您可以创建存储过程并通过ADO命令执行该过程:
create proc getCustomerOrders
@customerid int
as
begin
select
customer.customerid, customername, orderid, orderdate, orderamount
from customer inner join orders
on customer.customerid = orders.customerid and customer.customerid = @customerid
end
答案 2 :(得分:0)