如何将多个sql select语句中的数据填充到一个ridview中 [英] How to populate data from multiple sql select statements into one ridview

查看:100
本文介绍了如何将多个sql select语句中的数据填充到一个ridview中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我有一个问题,即使用多个查询从数据库中获取数据,并将其返回到asp.net c#代码,并将生成的数据集填充到单个gridview中。



我将展示数据库表的外观。

我的表是: -



1)tbl_user [userid,用户名,电子邮件,电话]

2)tbl_skills [skillid,skillname]

3)tbl_qualification [qualification_id,qualification_name]

4)tbl_user_skill [ userid,skill_id]

5)tbl_user_qualifiaction [userid,qualification_id]



我要求,基于userid,我需要创建一个逗号分开的技能列表,逗号分隔的资格列表,技能数,资格数,用户ID,用户名,电子邮件和电话。



为此,我创建了以下内容存储过程: -



Hello, I have a question about taking data from database using multiple queries, and returning it to the asp.net c# code, and populate the resulting dataset to a single gridview.

I will show how the database tables look like.
My tables are :-

1) tbl_user [userid, username, email, phone]
2) tbl_skills [skillid, skillname]
3) tbl_qualification [qualification_id, qualification_name]
4) tbl_user_skill [userid, skill_id]
5) tbl_user_qualifiaction [userid, qualification_id]

I require that, based on userid, I need to create a comma separated list of skills, a comma separated list of qualifications, count of skills, count of qualifications, userid, username, email and phone.

For that I created the following stored procedure:-

ALTER PROCEDURE [dbo].[sp_loaduserdetailsingridview]
@flag int=0,
@userid int=0,
@skillnames varchar(max)=null,
@skillcount int=0, 
@qualnames varchar(max)=null, 
@qualcount int=0,
@qualid int=0,
@skillid int=0
as
if(@flag=0)
 begin
 select @skillnames=coalesce(@skillnames + ', ','') + skill_name from tbl_skill inner join 
 tbl_user_skill on tbl_skill.skill_id=tbl_user_skill.skill_id where tbl_user_skill.userid=@userid

select @qualnames=coalesce(@qualnames + ', ','') + qualification_name from tbl_qualification inner join
 tbl_user_qualification on tbl_qualification.qualification_id=tbl_user_qualification.qualification_id
 where tbl_user_qualification.userid=@userid

select @skillcount=count(skill_id) from tbl_user_skill where userid=@userid

select @qualcount=count(qualification_id) from tbl_user_qualification where userid=@userid

select @skillnames as skillnames, @skillcount as skillcount, @qualnames as qualnames, @qualcount as qualcount

select username, email, hone from tbl_user where userid=@userid
end





我需要将最后两个选择查询返回到asp.net c#代码,并将其填入单个gridview。

gridview应该看起来像以下格式: -





I require the last two select queries o be returned to the asp.net c# code, and populate them in a single gridview.
The gridview should look like the following format:-

[username, skillnames, skillcount, qualnames, qualcount, email, phone]





我尝试使用数据集并使用单个数据集追加数据,但失败了上班。当我使用多个数据集时,gridview中的某些字段将被填充,其他字段将被存储,并且某些字段将被复制。



如何解决此问题。



I tried using a dataset and append the data using a single dataset, but failed to work. When I use multiple dataset, some fields in the gridview will be populated, others will be bank, and some fields are duplicated.

How to solve this.

推荐答案

你好朋友可以看一下这个修改过的商店程序......





hello friend can you please check it out this modified store procedure...


ALTER PROCEDURE [dbo].[sp_loaduserdetailsingridview]
	@flag INT=0,
	@userid INT=0,
	@skillnames VARCHAR(MAX)=NULL,
	@skillcount INT=0, 
	@qualnames VARCHAR(MAX)=NULL, 
	@qualcount INT=0,
	@qualid INT=0,
	@skillid INT=0
AS
IF(@flag=0)
BEGIN
	SELECT @skillnames=COALESCE(@skillnames + ', ','') + skill_name FROM tbl_skill 
		INNER JOIN  tbl_user_skill ON tbl_skill.skill_id=tbl_user_skill.skill_id 
	WHERE tbl_user_skill.userid=@userid
 
	SELECT @qualnames=COALESCE(@qualnames + ', ','') + qualification_name FROM tbl_qualification 
		INNER JOIN tbl_user_qualification ON tbl_qualification.qualification_id=tbl_user_qualification.qualification_id
	WHERE tbl_user_qualification.userid=@userid
 
	SELECT @skillcount=COUNT(skill_id) FROM tbl_user_skill 
	WHERE userid=@userid
 
	SELECT @qualcount=COUNT(qualification_id) FROM tbl_user_qualification 
	WHERE userid=@userid
	
	SELECT username
		, @skillnames AS skillnames
		, @skillcount AS skillcount
		, @qualnames AS qualnames
		, @qualcount AS qualcount
		, email
		, hone FROM tbl_user WHERE userid=@userid
		
END


你好专业



这是真的,你有朦胧的数据库,你需要窥视



但在IT中总是有异常的解决方案..





尝试加入子查询

和您喜欢的数据格式[用户名,技能名称,技能,资格,资格,电子邮件,电话]



你需要使用Coalesce()in构建SQL的功能



更多

在sqlserver中使用Coalesce() [< a href =http://www.codeproject.com/Tips/605339/Using-Coalesce-in-sqlservertarget =_ blanktitle =New Window> ^ ]



http://msdn.microsoft.com/en-us/ library / ms190349.aspx [ ^ ]



很乐意提供帮助!!!
hello profession

its true that you have hazy database that you need to marge as peek

but in IT there is always solution for Exception..


try good joining and Sub Queries
and for data format as you like [username, skillnames, skillcount, qualnames, qualcount, email, phone]

you need to use Coalesce() in build function of SQL

for more
Using Coalesce() in sqlserver[^]

http://msdn.microsoft.com/en-us/library/ms190349.aspx[^]

HAppy to help!!!


这篇关于如何将多个sql select语句中的数据填充到一个ridview中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆