نمایش نتایج 1 تا 18 از 18

نام تاپیک: کار با دستور Insert Into در SQl

  1. #1

    کار با دستور Insert Into در SQl

    با سلام به همگی دوستان.
    من دوتا جدول دارم که میخوام با دستور Insert into از یک جدول داده ها را Select کرده و داخل جدول دوم بریزم.
    مثلا در صورتی که تعداد فیلدها در جداول برابر یا متفاوت باشد میتوان به سادگی با دستور زیر این کار را انجام داد.

    insert into Bridgetable select ID,Name,Len,Width from TempTable

    اما این دستور برای زمانی کار میکنه که مقادیر داخل جدول اول قرار دارند و به راحتی در صورت هم خوانی نوع فیلدها در جدول دوم درج میگردد.
    اما سوال من اینه که چطور میشه داده ها رو همراه به Select و به صورت متغیر در جدول دوم درج نمود.
    توضیح جداول به صورت زیر است:

    جدولی که قراره داده ها در داخل اون درج بشه دارای فیلدها : کد- تاریخ، نوع،تعدادو شرح است.
    اما جدولی که قراره داده ها از اون Select بشه ، فقط فیلدهای کد و تعداد رو داره.

    حالا تاریخ ، نوع و شرح رو من داخل متغیر های جداگانه دارم و میخوام همزمان در این جدول به همراه فیلدهای کد و تعداد درج شود.

    این کار در sqL قابل انجامه چون قبلا در درس پایگاه داده این کار ها رو زیاد انجام دادیم .
    ولی الان دیگه با گذشت چندین سال فراموش کردم
    ممنون میشم دوستان و اساتید راهنمایی کنند.
    یا حق

  2. #2
    کاربر دائمی آواتار merced
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    خراسان جنوبي
    پست
    562

    نقل قول: کار با دستور Insert Into در SQl


    insert into Bridgetable (ID , Name , 0 , 'Comment') select ID,Name,Len,WidthString from TempTable


  3. #3

    نقل قول: کار با دستور Insert Into در SQl

    دوست عزیز با تشکر ولی شما منظور من رو متوجه نشدید.
    در جدول BridegTabel ما 5 تا فیلد دارم . فرضا ، کد، تاریخ، نوع،تعداد و شرح.
    اما در جدول TempTable ما دو تا از این فیلدها رو داریم. فقط کد و تعداد رو.
    حالا چگونه مقادیر تاریخ و نوع و شرح رو همراه با دستور Select در جدول BridgeTable درج کنم.
    حالا یا به هر روش و دستوری که بشه این کار رو انجام داد.
    در ضمن شما فرض کن تاریخ در متغیر Dates ، نوع در متغیر Types و شرح هم در متغیر Desc می باشد.
    یا حق

  4. #4
    کاربر دائمی آواتار merced
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    خراسان جنوبي
    پست
    562

    نقل قول: کار با دستور Insert Into در SQl

    خوب اگه نوع و شرح رو از كجا مي خواي بياري . اگه ميتوني با يه query جدول Temp رو بسط بدي كه نوع و شرح رو بياره خوب Select رو از اون كوئري انجام بده

  5. #5

    نقل قول: کار با دستور Insert Into در SQl

    خوب اگه نوع و شرح رو از كجا مي خواي بياري . اگه ميتوني با يه query جدول Temp رو بسط بدي كه نوع و شرح رو بياره خوب Select رو از اون كوئري انجام بده
    خوب اگه قرار بود این کار رو بکنم که دیگه چه کاری به دستور Insert into Select .
    همین طوری یکی یکی رکوردها رو از جدول اول میخوندم و در جدول دوم درج میکرد.
    هدف برای این کار سرعت بالا و عدم انجام کار اضافی در جداوله.
    در ضمن تا جایی که یادم میاد می شد فیلدهای اضافی رو در یک تکنیک خاص در داخل Select گنجاند و اونها رو در داخل جدول دوم درج کرد.

    من اينجور متوجه دم كه شما يه جدول داري كه 3 تا فيلدداره و دومي 2 تا فيلد مي خواي اوني رو كه سه تا فيلد داره بريزي داخل اوني كه دو تا داره ؟
    نه دوست عزیز شما برعکس متوجه شدی. این حالت که کاری نداره ، فقط کافیه تعداد فیلدها رو در دستور Select به تعداد فیلدهای جدولی که قراره داده ها در اون درج بشن انتخاب کنیم.
    من میخوام داده ها رو از جدولی که دو تا فیلد مشترک داره در جدولی که 4 تا فیلد داره درج کنم.
    حالا دو تا فیلد رو میخوام با Select درج کنم و دو تای دیگه رو از داخل دو تا متغیر .
    البته دوستان اگه روشی سریعتر و یا بهتر سراغ دارند ، معرفی کنند ممنون میشم.
    یا علی

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1388
    محل زندگی
    مشهد
    سن
    47
    پست
    65

    نقل قول: کار با دستور Insert Into در SQl

    از Cursor استفاده كن

  7. #7

    نقل قول: کار با دستور Insert Into در SQl

    از Cursor استفاده كن
    میشه لطف کنید و راهنمایی کنید. اصلا چی هست و به چه دردی میخوره؟

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ایران تهران
    پست
    608

    نقل قول: کار با دستور Insert Into در SQl

    کرسر برای این کار نیست وقتی از کرسر استفاده می کنیم که می خواهیم پیمایش روی رکورد ها داشته باشیم مثلا محاسبه کاردکس یک کالا از روی برگه ها
    البته خود کرسر بار سنگینی رو حافظه داره
    ....

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

    به نظر من شما باید یک stored procedure تعریف کنید و پارامتر هایی رو که ندارید مثل تاریخ ورودی stored procedure ست کنید و دستورتون
    insert into Bridgetable (ID , Name ,tarikh) select ID,Name,
    @tarikh
    from temptable

    میشه

  9. #9
    کاربر دائمی آواتار merced
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    خراسان جنوبي
    پست
    562

    نقل قول: کار با دستور Insert Into در SQl

    نقل قول نوشته شده توسط hadisalahi2 مشاهده تاپیک
    خوب اگه قرار بود این کار رو بکنم که دیگه چه کاری به دستور Insert into Select .
    همین طوری یکی یکی رکوردها رو از جدول اول میخوندم و در جدول دوم درج میکرد.
    هدف برای این کار سرعت بالا و عدم انجام کار اضافی در جداوله.
    در ضمن تا جایی که یادم میاد می شد فیلدهای اضافی رو در یک تکنیک خاص در داخل Select گنجاند و اونها رو در داخل جدول دوم درج کرد.
    قبلي اشتباه گفتم .. بايد مقادير ثابت رو تو Seclect بياري
    اگه دو فيلد در جدول مقصد هست كه مي خواي مقادير ديگه اي بهش بدي
    اگر مقادير ثابتند (در اينجا 0 و Comment)

    insert into Bridgetable (ID , Name ,NumberFied , aString) select ID,Name,0,'Comment' from TempTable


    و شما گفتي يكي يكي . من اينو نگفتم دقت كن گفتم Select ساده رو تبديل به يك query كن
    به شرطي كه فيلدهايي كه كم داري از ازيك كوئري ديگه بدست مي آد



    insert into Bridgetable (ID , Name ,NumberFied , aString) select * from (Selcet x , y , z, a from temp inner Join .. . va ela akhar)

  10. #10

    نقل قول: کار با دستور Insert Into در SQl

    نقل قول نوشته شده توسط merced مشاهده تاپیک
    قبلي اشتباه گفتم .. بايد مقادير ثابت رو تو Seclect بياري
    اگه دو فيلد در جدول مقصد هست كه مي خواي مقادير ديگه اي بهش بدي
    اگر مقادير ثابتند (در اينجا 0 و Comment)

    insert into Bridgetable (ID , Name ,NumberFied , aString) select ID,Name,0,'Comment' from TempTable
    و شما گفتي يكي يكي . من اينو نگفتم دقت كن گفتم Select ساده رو تبديل به يك query كن
    به شرطي كه فيلدهايي كه كم داري از ازيك كوئري ديگه بدست مي آد



    insert into Bridgetable (ID , Name ,NumberFied , aString) select * from (Selcet x , y , z, a from temp inner Join .. . va ela akhar)
    با سلام و تشکر
    البته قبلا هم عرض کردم و مقادیر توضیحات و تاریخ رو در متغیر نگهداری میکنم.
    حالا اینکه شما اونها رو ثابت تعریف کردید.
    حالا اون دو مقدار رو آیا Select میشناسد؟

    فکر نکنم نیازی به ایجاد یک کوئری پیچیده تر باشد.چون من مقادیر را دارم نیازی نیست تا اونها رو از داخل جدول دیگه بدست بیارم. اول اینکه این کار باعث بالا رفتن تعداد پردازش ها شده و همچنین در جدول ثانویه این مقادیر وجو نداره که بخوام اونها رو از جدول دیگه ای استخراج کنم.
    یا حق

  11. #11
    کاربر دائمی آواتار merced
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    خراسان جنوبي
    پست
    562

    نقل قول: کار با دستور Insert Into در SQl

    نقل قول نوشته شده توسط hadisalahi2 مشاهده تاپیک
    مقادیر توضیحات و تاریخ رو در متغیر نگهداری میکنم.
    خسته نباشيد. حالا چه جوري مي خوايد با يه دستور Insert اون مقادير (كه احتمالاً براي چند ركورد هست) رو بياريد تو جدول مقصد؟؟ با پيمايش ؟


    ببين ما در دو سطح مختلف كار مي كنيم. يكي تو delphi كه شما متغير دارين و يكي SQL Server
    حالا چطور ميشه با يه دستور Insert Into مقادير متغير ها رو در ركوردهاي ايجاد شده توسط اين دستور ثبت كرد .. فكر نمي كنم بشه.

  12. #12
    کاربر دائمی آواتار حسین شهریاری
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ایران
    پست
    794

    نقل قول: کار با دستور Insert Into در SQl

    سلام

    این کار شدنی است.چرا که شما توی Select میتونین مقادیر ثابت را هم استفاده کنین.پس از همین قاعده استفاده کنین.برای اطمینان بیشتر توی آنالایزر بنویسید:select 1,2,3,4,'ggggg',8 ببینید چه اتفاقی میفته؟
    جواب شما دوست عزیز اینه کمی بهش ور برین و توی پروژه خودتون استفاده کنین:
    adoquery.sql.text:='insert into Bridgetable select ID,'+Dates+','+Types+',Tedad,sharh from TempTable'
    adoquery.ExecSql
    در اصل ما اومدیم و کمبود مقادیری را که توی TempTable بوده را با مقادیر ثابت(همان متغیرهای شما) جبران کردیم

    موفق باشید

  13. #13

    نقل قول: کار با دستور Insert Into در SQl

    خسته نباشيد. حالا چه جوري مي خوايد با يه دستور Insert اون مقادير (كه احتمالاً براي چند ركورد هست) رو بياريد تو جدول مقصد؟؟ با پيمايش ؟
    سلامت باشید.
    اگه بلد بودم که سوال نمی کردم.

    ببين ما در دو سطح مختلف كار مي كنيم. يكي تو delphi كه شما متغير دارين و يكي SQL Server
    حالا چطور ميشه با يه دستور Insert Into مقادير متغير ها رو در ركوردهاي ايجاد شده توسط اين دستور ثبت كرد .. فكر نمي كنم بشه.
    ولی من مطمئن هستم که میشه.چون قبلا این کار رو انجام دادم ولی حالا یادم نمی یاد قبلا این کار رو چطوری و با چه دستوری انجام دادم.

    adoquery.sql.text:='insert into Bridgetable select ID,'+Dates+','+Types+',Tedad,sharh from TempTable'
    adoquery.ExecSql
    به نظر شما اینکه dates رو داخل کوتیشن قرار بدیم میتونه اون رو به عنوان متغیر شناسایی کنه؟
    فکر کنم اینطوری فقط اونها رو به صورت رشته شناسایی کنه نا متغیر.

  14. #14
    کاربر دائمی آواتار merced
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    خراسان جنوبي
    پست
    562

    نقل قول: کار با دستور Insert Into در SQl

    نقل قول نوشته شده توسط hadisalahi2 مشاهده تاپیک

    ولی من مطمئن هستم که میشه.چون قبلا این کار رو انجام دادم ولی حالا یادم نمی یاد قبلا این کار رو چطوری و با چه دستوری انجام دادم.
    نميشه .. يادت هم نمياد

  15. #15

    نقل قول: کار با دستور Insert Into در SQl

    نقل قول نوشته شده توسط merced مشاهده تاپیک
    نميشه .. يادت هم نمياد
    اینجا جای کل کل کردن نیست.
    حالا آدم اگه جواب مسئله ای رو نمیدونه ، دلیل نمیشه صورت مسئله رو پاک کنه
    بهتره شما با ذکر یک صلوات بیخیال بشی.

    خودم دارم سعی میکنم و صددرصد روشش رو پیدا میکنم.

    در ضمن از سایر دوستان هم تقاضای راهنمایی دارم.
    یا علی

  16. #16
    کاربر دائمی آواتار merced
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    خراسان جنوبي
    پست
    562

    نقل قول: کار با دستور Insert Into در SQl

    كل كل نيست و اگه يه خورده به ساختار Insert Into نيگاه كني مي بيني كه نميشه از يه جدول فقط دو فيلدش رو Select كني و در دو فيلد از جدول مقصد بذاري و اون دو فيلد جدول مقصد مقادير متغير داشته باشند

    شما هم كه مي گي اين متغيرها رو تو دلفي داري . پس بايد تو يه آرايه اي چيزي باشه.
    ظاهراً نميشه .
    البته درسته كه كار نشد نداره . ولي شما يه كد يا يه برنامه با ورودي بذار، اساتيد كمك كنند خروجي دلخواه شما رو توليد كنند . شايد من هم كه بد متوجه منظورتون شدم يه چيزي درك كردم.

  17. #17
    کاربر دائمی آواتار حسین شهریاری
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ایران
    پست
    794

    نقل قول: کار با دستور Insert Into در SQl

    سلام

    دوست گرامی آقای salahi اگه دو مقدار بالا(Dates,Type)رشته ای هستند حق باشما هست،من فراموش کردم اونا را توی سینگل کوتیشن قرار بدم.کد بالا را اصلاح و باز نویسی میکنم.
    ضمنا از شما تشکر میکنم که اینقدر با جنبه هستید...!!!.!!!!

    adoquery.sql.text:='insert into Bridgetable select ID,'+Quotedstr(Dates)+','+Quotedstr(Types)+',Tedad ,sharh from TempTable'
    adoquery.ExecSql

    موفق باشید
    -------------------------------------------------------------------
    جهان به تلاش پاداش میدهد نه به بهانه...
    یا علی

  18. #18

    نقل قول: کار با دستور Insert Into در SQl


    adoquery.sql.text:='insert into Bridgetable select ID,'+Quotedstr(Dates)+','+Quotedstr(Types)+',Tedad ,sharh from TempTable'

    با سلام
    کد شما رو هنوز تست نکردم ولی فکر کنم دیگه به اون کوتیشن ها دیگه نیازی نباشه.
    چون تابع Quotedstr خودش این کار رو انجام میده
    یا علی

برچسب های این تاپیک

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

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