View Full Version : اضافه کردن محتویات سطرهای قبلی البته با تغییر در محتویات آن
hossein16
جمعه 22 دی 1391, 08:26 صبح
سلام
من یک جدول برای سهامداران ایجاد کردم که در آن تاریخ سرمایه گذاری و مبلغ آورده و درصد شراکت هر سهامدار ثبت می شود. حال می خواهم با اضافه کردن سهامدار جدید سهام دیگر سهامداران نیز بروز شده و سهام جدید هر سهامدار در سطرهای جدید ذخیره شود ولی رکوردهای قبلی دست نخورده باقی بمانند(برای تاریخچه).
حالا نمی دانم با دستورات sql چطور این کار را پیاده سازی کنم.
لطفاً راهنمایی کنید.
با تشکر
محمد سلیم آبادی
شنبه 23 دی 1391, 10:56 صبح
سلام،
من یک جدول برای سهامداران ایجاد کردم
ممکنه DDL جدول را همراه با چند نمونه داده ارسال کنید؟
حال می خواهم با اضافه کردن سهامدار جدید سهام دیگر سهامداران نیز بروز شده و سهام جدید هر سهامدار در سطرهای جدید ذخیره شود ولی رکوردهای قبلی دست نخورده باقی بمانند(برای تاریخچه).
امکان داره روی یک نمونه داده (با یک مثال عملی) مسالتون رو شرح بدین؟
hossein16
دوشنبه 25 دی 1391, 23:07 عصر
به عنوان مثال
اولین سهامدار در تاریخ 90/1/1 مبلغ ده هزار سرمایه گذاری می کند و محتویات جدول به صورت زیر می شود:
id=1
date=1390/1/1
investment=10000
sahm=100
حالا فرض کنید فرد دیگری در تاریخ 1/7/90 مبلغ سی هزار سرمایه گذاری می کند به این ترتیب سهم سهامدار قبل به 25 نزول پیدا می کند و می بایست سهم مشخصات سهامدار جدید به صورت بالا با این تفاوت که id=2 ,
investment=30000 , sahm=75 در جدول ثبت شود و مشخصات سهامدار قبلی که با ورود سهامدار جدید میزان سهم او کمتر شده است،هم دوباره در جدول البته با تاریخ 90/7/1 ثبت شود.
امیدوارم متوجه مشکلم شده باشید.
محمد سلیم آبادی
سه شنبه 26 دی 1391, 17:08 عصر
id به معنای کد سهامدار هست؟
وقتی یک سهامدار میخواهد مبلغ سرمایه گذاری شده اش را کاهش یا افزایش دهد آیا سطر فعلی فرد در جدول بروز میشود یا اینکه یک سطر جدید به جدول اضافه میشه؟
حال می خواهم با اضافه کردن سهامدار جدید سهام دیگر سهامداران نیز بروز شده و سهام جدید هر سهامدار در سطرهای جدید ذخیره شود ولی رکوردهای قبلی دست نخورده باقی بمانند(برای تاریخچه).
این کار اشتباهه لزومی نداره که سطرهای قبلی بروز رسانی بشن و همچنین لزومی نداره که دوباره سطرهای قبلی با این تفاوت که تاریخ و سهمشون تغییر کرده مجددا در جدول افزوده بشن.
مگه شما پیروی قوانین نرمالسازی نیستین.
hossein16
سه شنبه 03 بهمن 1391, 22:05 عصر
حق با شماست ولی می خواهم در پایان دوره میزان سود تعلق گرفته به هر سهامدار را با توجه به تاریخ و درصد سهم او حساب کنم
اگر بخواهم با هر سرمایه گذاری فقط مقدار قبلی مربوطه را آپدیت کنم دیگر قادر به تشخیص اینکه میزان هر سهامدار در مدت دوره مثلاً یک ساله چقدر بوده نیستم
از طرفی می خواهم تاریخچه ای از سرمایه گذاری ها و میزان سهم هر سهامدار در طول دوره را داشته باشم.
محمد سلیم آبادی
چهارشنبه 04 بهمن 1391, 19:30 عصر
شما هنوز به سوالات پست قبلیم جواب ندادین!
من گفتم شما نیاز نیست که مقادیر قبلی را بروز رسانی کنید. میتوان توسط query سهم هر سهامگذار در دوره های مختلف را بدست آورد بدون اینکه سطرهای قبلی بروز بشن و یا سطرهای جدیدی بر اساس سطرهای قدیم درج بشن.
شما حتی 5 سطر نمونه از داده هایتون در وضعیت های مختلف ارسال نکردین تا بتونم من بر اساس اون یک query بنویسم...
hossein16
جمعه 13 بهمن 1391, 19:19 عصر
USE [DbDATABAASE]
GO
/****** Object: Table [dbo].[TbSarmaye_Gozari] Script Date: 02/01/2013 19:16:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TbSarmaye_Gozari](
[Id_f_sarmayeGozar] [int] NULL,
[date_SarmayeGozari] [date] NULL,
[mablagh_SarmayeGozari] [bigint] NULL,
[darsade_sahm] [float] NULL,
[str_date_SarmayeGozari] [nchar](10) NULL
) ON [PRIMARY]
GO
99394
همانطور که در جدول بالا مشخص است در صورتیکه فرد جدیدی به جدول اضافه شود و مبلغی را به عنوان سرمایه واگذار کند نه تنها میزان درصد سهم او از کل موجودی محاسبه می شود بلکه سهم سایر سهامداران نیز تغییر و نیاز به محاسبه مجدد دارد.
همچنین با توجه به اینکه در جدول دیگری میزان سود و زیان روزانه ثبت می شود می بایست بدانیم در یک روز خاص از سال میزان سهم هر سهامدار چقدر بوده تا بتوانیم مبلغ سود و زیان او در آن روز خاص را تعیین کنیم.
از طرفی فرض کنید سهامدار با کد 12 بخواهد سرمایه خود را در تاریخ 1391/12/24 به 30000 افزایش دهد. در این صورت باید سهم جدید وی را حساب و سهم سایرین را مجدداً محاسبه کنیم( که البته در محاسبه سهم هر سهامدار مشکلی ندارم) ولی برای اینکه می خواهم در پایان دوره(مثلاً هر سال)سهم هر سهامدار را در تاریخ خاص بدانم دچار مشکل شده ام.
توجه:همانگونه که از اطلاعات جدول بالا هم مشخص است، هیچ تضمینی توسط کاربر برنامه در خصوص وارد کردن سرمایه گذاری سهامداران به ترتیب تاریخ سرمایه گذاری وجود ندارد و برنامه از این لحاظ باید قابل انعطاف باشد
ممنون می شوم مرا در حل این مشکل یاری کنید.
محمد سلیم آبادی
شنبه 14 بهمن 1391, 09:49 صبح
جدولتان کلید اولیه ندارد؟ اگر دارد کدام است؟
hossein16
شنبه 14 بهمن 1391, 22:15 عصر
این جدول کلید اصلی ندارد.
محمد سلیم آبادی
یک شنبه 15 بهمن 1391, 13:36 عصر
برای محاسبه نسبت سهم سهامگذار به کل سهام از این query استفاده کنید:
declare @Sarmaye table
(
[Id_f_sarmayeGozar] [int] NULL,
[date_SarmayeGozari] [date] NULL,
--[mablagh_SarmayeGozari] [bigint] NULL,
[darsade_sahm] [float] NULL
)
insert @Sarmaye
values (12, '2011-11-22 00:00:00', 12000),
(13, '2011-11-26 00:00:00', 12000),
(11, '2011-11-20 00:00:00', 8000);
select *, perct = [darsade_sahm] / sum([darsade_sahm]) over()
from @Sarmaye
/*
Id_f_sarmayeGozar date_SarmayeGozari darsade_sahm perct
----------------- ------------------ ---------------------- ----------------------
12 2011-11-22 12000 0.375
13 2011-11-26 12000 0.375
11 2011-11-20 8000 0.25
*/
hossein16
یک شنبه 15 بهمن 1391, 17:13 عصر
همانطور که قبلاً هم گفته بودم من هیچ مشکلی برای برای محاسبه سهم هر سهامدار ندارم
مشکل من فقط برای تشکیل تاریخچه سرمایه گذاریهای هر سهامدار در طول سال است
ز طرفی فرض کنید سهامدار با کد 12 بخواهد سرمایه خود را در تاریخ 1391/12/24 به 30000 افزایش دهد. در این صورت باید سهم جدید وی را حساب و سهم سایرین را مجدداً محاسبه کنیم( که البته در محاسبه سهم هر سهامدار مشکلی ندارم) ولی برای اینکه می خواهم در پایان دوره(مثلاً هر سال)سهم هر سهامدار را در تاریخ خاص بدانم دچار مشکل شده ام.
توجه:همانگونه که از اطلاعات جدول بالا هم مشخص است، هیچ تضمینی توسط کاربر برنامه در خصوص وارد کردن سرمایه گذاری سهامداران به ترتیب تاریخ سرمایه گذاری وجود ندارد و برنامه از این لحاظ باید قابل انعطاف باشد
hossein16
یک شنبه 22 بهمن 1391, 17:00 عصر
کسی نیست جواب ما را بدهد:ناراحت:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.