View Full Version : درج یک آرایه در جدول
farzane_t
شنبه 12 بهمن 1392, 17:57 عصر
سلام دوستان
فرض کنید آرایه ای داریم به این صورت :
asp.net,php,c#,vb
این آرایه در واقع کلمات کلیدی مربوط به مطلبی با pid=1 هست. جدولی دارم به اسم keyword که این کلمات داخلش هست.
keyword
--------------------------
kid key
--------------------------
1 asp.net
2 php
3 c#
4 vb
میخوام این آرایه به شکل زیر در جدولی به اسم p-tag درج بشه. مشکلم اینه که اولا باید بررسی بشه تمام عناصر این آرایه داخل جدول keyword وجود داره ، اگر وجود داشت درون جدول p-tag درج بشه :
------------------------
pid kid
------------------------
1 1
1 2
1 3
1 4
با C# میتونم انجامش بدم. اما میخوام تمام این عملیات داخل sql انجام بشه. امکانش هست ؟
ممنون میشم راهنماییم کنید.
N_D
یک شنبه 13 بهمن 1392, 08:45 صبح
دوست عزیز فکر کنم منظورت اینه که چطور یک رشته را تبدیل به جدول کنی.. من کد زیر رو برات میذارم و مابقی کار رو خودت انجام بده ..
Declare @XML XML ,@List nvarchar(4000)= 'asp.net,php,C#,vb'
SET @XML = '<T><F>'+REPLACE( @List,',','</F></T><T><F>')+'</F></T>'
SELECT Fld.value('F[1]','nvarchar(100)') as UnitName
FROM @XML.nodes('T')Tbl(Fld)
farzane_t
یک شنبه 13 بهمن 1392, 15:05 عصر
ممنون بابت پاسخگویی.
نه دوست من. سوال رو جور دیگه مطرح می کنم. جدولی دارم به اسم keyword که دادهای درونش هم مشخصه و گفتم قبلا. textboxی دارم که کاربر مثلا رشته زیر رو داخلش وارد می کنه :
asp.net,php,C#,vb,css
من باید این کلمات رو درون جدول دیگه ای به اسم p-tag وارد کنم. ولی قبلش باید بررسی کنم که asp.net و php و ... که کاربر وارد کرده در جدول keyword وجو داره یا نه. اگر اون کلمه وجود داشت درج کنه و اگر نبود اون کلمه رو برگدونه
farzane_t
سه شنبه 15 بهمن 1392, 08:30 صبح
راهی که میخواستم پیدا کردم :
Table-Valued Parameters (http://msdn.microsoft.com/en-us/library/bb675163%28v=vs.110%29.aspx)
حمیدرضاصادقیان
سه شنبه 15 بهمن 1392, 08:48 صبح
سلام.
شما از طریق TVP میتونید اینکارو بکنید ولی اگر به صورت رشته ارسال میکنید باید جوری رشته مورد نظر رو تفکیک کنید و به ستون تبدیل کنید که یک روش خاص داره و بعد میتونید کارهای مورد نظر رو روی اون داده ها انجام بدید.
starting
سه شنبه 15 بهمن 1392, 09:35 صبح
خیلی دشوار نیست. میشه برای این منظور از دستور LIKE کمک گرفت فقط عملگر سمت چپ باید پارامتر ورودی شما باشه که همون Comma Separated List هست، و عملگر سمت راستی نام ستونی است که کلیدواژه ها در اون مقیم شدن:
Create Procedure Test (@value Varchar(500))
AS
SELECT * FROM Keywords
WHERE ','+@value+',' LIKE ','+keys+',';
farzane_t
چهارشنبه 16 بهمن 1392, 17:33 عصر
آقای صادقیان میشه توضیح بیشتری بفرمایید؟ من این پروسیجر رو نوشتم ولی خطای 119 رو میده :
CREATE PROCEDURE [dbo].[InsertPaperTag]
(@dt AS PaperKeywordsType READONLY ,
@PID int)
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.PaperTags(PID,PKeyID)
SELECT @PID,PaperKeywords.PKeyID FROM @dt tvp
inner join PaperKeywords on PaperKeywords.PKeyword = tvp.PKeyword
END
farzane_t
چهارشنبه 16 بهمن 1392, 17:43 عصر
از کابر آرایه ای میگیرم مثلا به این شکل :
Asp.net,C#,css,php
من باید کل این آرایه رو بفرستم به sql . بررسی کنم عناصر آرایه داخل جدول PaperKeywords وجود داره یا نه. اگر وجود داره ، id رو به دست بیارم و با PID (id مطلبی که نوشته شده) داخل جدول PaperTags درج کنم.
از این مطالب هم کمک گرفتم اما نشد.
http://www.codeproject.com/Questions/631284/How-to-pass-an-array-to-SQL-SERVER-2008-stored-pro
http://msdn.microsoft.com/en-us/library/bb675163%28v=vs.110%29.aspx
http://www.aspdotnet-suresh.com/2012/09/pass-table-as-parameter-to-stored.html
اینم جداول و ارتباط بینشون :
http://upload7.ir/imgs/2014-02/63079942644404471328.png
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.