ورود

View Full Version : یک پروسیجر که از جداول دیگر هم برای ورود داده بهره می برد



rezaei manesh
چهارشنبه 27 اردیبهشت 1385, 11:54 صبح
سلام
من یک جدول دارم که دارای یک فیلد id که اوتو نامبر است و یک فیلد برای ورود نام و 3 فیلد اینتیجر دیگه که id های جداول دیگه هست که هر 3 مورد در یک جدول که id اون رو هم دارم .من این 3 فیلد آخر را در گزارشات فقط استفاده می کنم (برای راحت تر شدن کار) حالا می خوام یک پروسیجر داشته باشم که یک نام و یک id رو بگیره توسط اون id مقدار این 3 فیلد منو پیدا کنه و به همراه نام در جدول ثبت کنه
در کل یعنی من یک جدول دارم که شامل 4 فیلد هست که یکی از اونا وارد و بقیه باید توسط خود پروسیجر از یک جدول دیگه پیدا بشه و در این جدول درج بشه
من این کد رو نوشتم اما نمی دونم حالا باید چطوری مقدار اون 3 فیلد دیگه رو پیدا کنم
کجا شو باید تغییر بدم؟
CREATE PROCEDURE SpInsertTTopic(@IdResearcheriden int,@InterestingTpc nvarchar(100),@hasExit bit OUTPUT)
AS
IF EXISTS (SELECT InterestingTopic FROM TTopic WHERE InterestingTopic =@InterestingTpc )
BEGIN
SET @hasExit=1
END
ELSE
BEGIN
INSERT INTO TTopic
(InterestingTopic ,RowLuck)
VALUES (@InterestingTpc,0)
SET @hasExit= 0
END
GO

reza_rad
چهارشنبه 27 اردیبهشت 1385, 14:21 عصر
با subquery .
مشکل کجاست؟!
جاییکه باید بگی set=.... می تونی یه select بزنی.

rezaei manesh
پنج شنبه 28 اردیبهشت 1385, 09:25 صبح
INSERT INTO TTopic
(InterestingTopic ,RowLuck)
VALUES (@InterestingTpc,0)

GO
من مقدار اون 3 فیلد رو چطوری اینجا بزارم
یعنی من 3 تا فیلد رو انتخاب کنم و در قسمت values هم یک سلکت بنویسم که اون 3 تا فیلد رو بر می گردونه؟

reza_rad
پنج شنبه 28 اردیبهشت 1385, 09:34 صبح
عنی من 3 تا فیلد رو انتخاب کنم و در قسمت values هم یک سلکت بنویسم که اون 3 تا فیلد رو بر می گردونه؟


دقیقا!

منتها سه تا سلکت بنویس برای هر فیلد یکی
مثلا اینجوری:


insert into table1 (f1,f2,f3) values((select table2.f1 from table2),(select table3.f1 from table3),...)

rezaei manesh
دوشنبه 01 خرداد 1385, 11:37 صبح
سلام
آقا نمی شه ، سر سلکت گیر میده
نباید سلکت رو داخل دستور خاصی بزاریم؟ پرانتز که جواب نمی ده!

AminSobati
دوشنبه 01 خرداد 1385, 23:21 عصر
Subquery در دستور Select قابل استفاده نیست. شما میتونین به متغیرها مقدار بدین و این متغیرها رو Insert کنین. برای پر کردن متغیر از دستور Select به این شکل عمل کنید:


DECLARE @tmp1 INT
DECLARE @tmp2 INT
SELECT @tmp1=MyColumn1, @tmp2=MyColumn2 FROM MyTable WHERE ...
INSERT SomeTable(C1,C2) VALUES(@tmp1,@tmp2)