صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 48

نام تاپیک: نوشتن کوئری از دو جدول متفاوت

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نوشتن کوئری از دو جدول متفاوت

    سلام

    من دو جدول دارم یکی جدول امور و دیگری جدول مشترک حالا میخوام کوئری insert رو طوری بنویسم که هر مشترک فقط یک امور داشته باشه و اگر مشترکی خواست دو امور داشته باشه پیغام خطا بده

    چکار باید بکنم؟

    فیلدهای جدول امور: cid,name,family,address

    فیلدهای جدول مشترک: Id,cid,cname,cfamily,caddress

    ممنون از تمامی دوستان.

  2. #2
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    درود بر شما
    اندکی صبر میکردین همونجا جواب میدادن دوستان
    اگر دیتابیستون رو بگید چیه بهتر راهنمایی می کنم.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    سلام

    SQL server 2012

    نام دیتابیس: testDB

  4. #4
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    خیلی خیل راحته
    شما در جدول مشترک دو فیلد id و cid رو به عنوان primary key تعریف کنید. با query اینجور میشه البته هنگام تعریف جدول:

    Constraint PK_table1 PRIMARY KEY(ClassID, StudentID)

    اگر از wizard می خواید استفاده کنید. روی table راست کلیک، design و بعد دوتا ستون روی انتخاب کنید و روی دکمه set as primary key کلیک کنید و save کنید.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    آقای بیضاوی منظورم این نبود، منظورم این بود که cid در جدول امور، کلید خارجی در جدول مشترک(cid) هست حالا من میخوام کوئری insert رو طوری هندل کنم که وقتی در جدول مشترک insert انجام میشه همون اطلاعات یعنی نام و نام خانوادگی و آدرس در جدول امور با توجه به cid هاشون انجام بشه. اگه میشه کوئری insert رو بهم بگین چطوری بنویسم؟

    ممنون از لطفتون.

  6. #6
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    نمیدونم درست متوجه شدم یا نه
    اما طبق فرموده شما راه حل استفاده از Triger هست البته روی همون جدول امور. فک کنم اینجور بشه:

    ALTER TRIGGER [dbo].[InsertIntoMoshtarak] ON [dbo].[Omoor]
    AFTER INSERT
    AS
    BEGIN
    SET NOCOUNT ON;




    -- get the last id value of the record inserted or updated
    DECLARE @id INT
    DECLARE @name varchar(50)
    DECLARE @family varchar(50)
    DECLARE @address varchar(50)
    SELECT @id = [cid], @name=[name], @family=[family], @address=[address]
    FROM INSERTED




    INSERT INTO(cid,cname,cfamily,caddress)
    VALUES @id,@name,@family,@address;




    END

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    این تریگری که شما نوشتین رو ارور میگیره.

  8. #8
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    نقل قول نوشته شده توسط manit44 مشاهده تاپیک
    این تریگری که شما نوشتین رو ارور میگیره.
    من دیتابیس ندارم.
    همینجور نوشتم، errorش چیه؟؟؟

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    Msg 102, Level 15, State 1, Procedure InsertIntoCustomer, Line 21Incorrect syntax near '('.



  10. #10
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    دوستان عزیز یه کمکی کنند!!!!!!!!!!!!

  11. #11
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    اوه اوه ببخشید.
    بین INTO و پرانتز باز اسم جدول مشترک رو بذار

  12. #12
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    حالا یه ارور دیگه داد:

    Msg 102, Level 15, State 1, Procedure InsertIntoMoshtarak, Line 22
    Incorrect syntax near '@id'.

  13. #13
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    دارم SQL نصب میکنم.
    اینو امتحان کن فک کنم این درستره تا نصب بشه خودمم چک کنم.:

    ALTER TRIGGER [dbo].[InsertIntoMoshtarak] ON [dbo].[Omoor]
    AFTER INSERT
    AS
    BEGIN
    SET NOCOUNT ON;


    -- get the last id value of the record inserted or updated
    DECLARE @id INT;
    DECLARE @name varchar(50);
    DECLARE @family varchar(50);
    DECLARE @address varchar(50);

    SET @id = o.id from insertted o;
    SET @name = o.name from insertted o;
    SET @family = o.family from insertted o;
    SET @address = o.address from insertted o;

    INSERT INTO(cid,cname,cfamily,caddress)
    VALUES @id,@name,@family,@address;
    END

  14. #14
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    ارورش بیشتر شد که کمتر نشد.

  15. #15

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    https://barnamenevis.org/showthread.p...17#post2104617
    میشه به این تاپیک منم جواب بدین ؟

  16. #16
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    حالا چک کن

    CREATE TRIGGER [dbo].[InsertIntoMoshtarak] ON [dbo].[Omoor]
    AFTER INSERT
    AS
    BEGIN
    SET NOCOUNT ON;
    insert into moshtarak (cid,cname,cfamily,caddress)
    (select cid,name,family,address from omoor where id=@@IDENTITY)
    END
    GO

  17. #17
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    این قسمت فکر کنم باید cid باشه:

    cid=@@IDENTITY)


    درسته؟

  18. #18
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    نه، اگر Id جدول omoor به صورت identity باشه با این کوئری آخرین رکورد insert شده رو که id اون با همین@@Identity برابره واکشی میکنه.
    فکر میکنم همین درسته. نیست؟

  19. #19
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    میبخشید میدونم اینجا جاش نیست ولی خیلی واجبه

    تو برنامم یعنی C#‎ وقتی تریگرم رو صدا میزنم با ارور زیر مواجه میشم:

    The request for procedure 'trg_customer' failed because 'trg_customer' is a trigger object.

    اینم کدمه:
    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=testDB;Integrated Security=True");            con.Open();
    SqlCommand cmd = new SqlCommand("trg_customer", con);
    cmd.CommandType = CommandType.StoredProcedure;
    SqlParameter p1 = new SqlParameter("cname", txtName.Text);
    SqlParameter p2 = new SqlParameter("cfamily", txtFamily.Text);
    SqlParameter p3 = new SqlParameter("caddress", txtAddress.Text);
    cmd.Parameters.Add(p1);
    cmd.Parameters.Add(p2);
    cmd.Parameters.Add(p3);
    cmd.ExecuteNonQuery();
    con.Close();
    Label4.Text = "اطلاعات با موفقیت ثبت شد";
    GridView1.DataBind();


    خیلی ممنون.

  20. #20
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    نقل قول نوشته شده توسط manit44 مشاهده تاپیک
    میبخشید میدونم اینجا جاش نیست ولی خیلی واجبه

    تو برنامم یعنی C#‎‎ وقتی تریگرم رو صدا میزنم با ارور زیر مواجه میشم:

    The request for procedure 'trg_customer' failed because 'trg_customer' is a trigger object.

    اینم کدمه:
    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=testDB;Integrated Security=True");            con.Open();
    SqlCommand cmd = new SqlCommand("trg_customer", con);
    cmd.CommandType = CommandType.StoredProcedure;
    SqlParameter p1 = new SqlParameter("cname", txtName.Text);
    SqlParameter p2 = new SqlParameter("cfamily", txtFamily.Text);
    SqlParameter p3 = new SqlParameter("caddress", txtAddress.Text);
    cmd.Parameters.Add(p1);
    cmd.Parameters.Add(p2);
    cmd.Parameters.Add(p3);
    cmd.ExecuteNonQuery();
    con.Close();
    Label4.Text = "اطلاعات با موفقیت ثبت شد";
    GridView1.DataBind();


    خیلی ممنون.
    به به، به به....
    trigger رو که شما یا توی برنامه صدا نمیزنن، trigger آخرین station قبل از اعمال داده ها روی دیسک سخت افزاری هست و فقط engine دیتابیش اون رو handle می کنه.
    از اون گذشته خودتون که میبینید type دستورتون رو storedprocedure گذاشتین چرا می خواید یه کار دیگه باهاش انجام بدین؟؟؟
    راستی به trigger پارامتر هم نمیتونید پاس بدید

  21. #21
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    پس میتونم همون کد sql ای که در بالا برام گذاشتین قرارش بدم داخل یک پروسیجر؟

  22. #22
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    برای اینکه این کد رو بزارین توی sp و درست هم جواب بگیرید حداقلش اینه که Id رو باید بهش پاس بدین
    اما یه نکته؛ همون trigger که تمام کارتون بدون ذره ای کد نوشتن در سمت برنامه انجام میده. پس چرا میخواید اینکار رو انجام بدید؟؟؟؟!!!!!!

  23. #23
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

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

    کد:
    USE [testDB]GO
    /****** Object: StoredProcedure [dbo].[sp_customer] Script Date: 2014-09-18 1:25:47 AM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO


    ALTER PROCEDURE [dbo].[sp_customer]


    AS
    BEGIN


    -- Insert statements for procedure here
    SET NOCOUNT ON;
    insert into tbl_customer(cid,cname,cfamily,caddress)
    (select cid,name,family,address from tbl_omoor where cid=@@IDENTITY)
    END




    ارور:

    Procedure sp_customer has no parameters and arguments were supplied.

  24. #24
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    شما اینجا یه پارامتر دارید که ناشناختست و اون @@IDENTITY هست.
    این متغیر در زمان باز بودن connection هنگام INSERT شناخته میشه و اینجا معنی نداره.
    شما همین متغیر رو به صورت پارامتر ورودی به این sp پاس بدید و بعد همین پارامتر رو بزارید جای @@IDENTITY.

  25. #25
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    ببینید الان درست شد؟

    کد:
    ALTER PROCEDURE [dbo].[sp_customer]@Id int
    AS
    BEGIN


    -- Insert statements for procedure here
    SET NOCOUNT ON;
    insert into tbl_customer(cid,cname,cfamily,caddress)
    (select cid,name,family,address from tbl_omoor where cid=@Id)
    END




    اگه درسته تو سی شارپ باید چطوری ازش استفاده کنم؟

    ممنون.

  26. #26
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    یه سوال اگه بخوام این sp رو مستقیما تو سی شارپ بکار ببرم، میتونم این کار رو انجام بدم؟

  27. #27
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    درسته، فقط بهتره اینجا دیگه پرانتز اول و آخر select رو برداری.
    برای سی شارپ هم قبلا کدش رو نوشته بودی که. اینجوری:

    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=testDB;Integrated Security=True");
    SqlCommand cmd = new SqlCommand("sp_customer", con);
    cmd.CommandType = CommandType.StoredProcedure;
    SqlParameter p1 = new SqlParameter("Id", txtId.Text);
    cmd.Parameters.Add(p1);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
    Label4.Text = "اطلاعات با موفقيت ثبت شد";
    GridView1.DataBind();

  28. #28
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    نقل قول نوشته شده توسط manit44 مشاهده تاپیک
    یه سوال اگه بخوام این sp رو مستقیما تو سی شارپ بکار ببرم، میتونم این کار رو انجام بدم؟
    مگه به صورت کج هم داریم!!! آره دیگه همینجور که استفاده کردی و منم تکرارش کردم

  29. #29
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    آقای بیضاوی پیام موفقیت آمیز ثبت اطلاعات رو داد ولی چیزی داخل دیتابیس ثبت نکرد. چکار کنم؟

    ممنون.

  30. #30
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    از داخل SQL یا توی VS یک کوئری باز کن و اون sp رو با مقداری که می دونی توی جدول هست امتحان کن . فرض کن Id شماره 4 رو داری:

    EXEC sp_customer @id=4;

    ببین اجرا میشه با نه؟ چی پیام میده؟

  31. #31
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    بله درست اجرا میشه داخل SQL server، ولی وقتی برنامه رو تو ویژوال استودیو اجرا میکنم و فیلدها رو پر میکنم هیچ دیتایی ثبت نمیکنه ولی پیام موفقیت آمیز میده. چکار کنم که از داخل برنامه هم دیتا ثبت کنه؟

    ممنون.

  32. #32
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    می تونید یه break point روی این خط زیر بذارید ببینید مقدار p1 ارجاعی به sp چیه:
    con.Open();

    احتمالا این مقدار یا خالیه و یا یه مقدار نادرست که توی جدول نیست رو میگیره.

  33. #33
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    مقدار p1 رو null میده. باید چطوری پرش کنم؟ چون تو sql درست جواب میده.

  34. #34
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    این دوتا خظ رو پاک کن :

    SqlParameter p1 = new SqlParameter("Id", txtId.Text);
    cmd.Parameters.Add(p1);


    از این بجاش استفاده کن ببین اکی میشه:
    cmd.Parameters.AddWithValue("Id", txtId.Text);

  35. #35
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    نه درست نشد.

  36. #36
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    یعنی بازم مقدار پارامتر خالیه؟
    اصلا ببین مقداری که میخوای بزاری جای Id پر میشه؟ مقدارش چیه؟!!!

  37. #37
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    بله باز هم مقدار پارامتر خالیه

  38. #38
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    نه، گفتم ببین مقدار پارامتری که میخوای بریزی داخل پارامتر چیه، اون یه مشکلی داره نه پارامتره!!!

  39. #39
    کاربر دائمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    479

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    اون رو هم null بزمیگردونه

  40. #40
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: نوشتن کوئری از دو جدول متفاوت

    آقا صبح شد
    کد این صفحه رو بذار ببینم Id رو چطور داری میگیری و به اینجا میرسونی

صفحه 1 از 2 12 آخرآخر

تاپیک های مشابه

  1. درخواست کمک برای نوشتن کوئری بین 3 جدول
    نوشته شده توسط shervinrv در بخش T-SQL
    پاسخ: 3
    آخرین پست: سه شنبه 25 شهریور 1393, 15:42 عصر
  2. نحوه نوشتن کوئری برای این جدول
    نوشته شده توسط coder111 در بخش T-SQL
    پاسخ: 1
    آخرین پست: شنبه 25 آذر 1391, 22:11 عصر
  3. سوال: کوئری از دو جدول متفاوت
    نوشته شده توسط navid3d_69 در بخش PHP
    پاسخ: 3
    آخرین پست: شنبه 20 آبان 1391, 07:48 صبح
  4. پاسخ: 1
    آخرین پست: جمعه 26 تیر 1388, 08:52 صبح
  5. ساخت یک کوئری از 2 جدول در 2 دیتابیس متفاوت
    نوشته شده توسط A.Farzin در بخش Access
    پاسخ: 3
    آخرین پست: سه شنبه 10 مرداد 1385, 15:37 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •