PDA

View Full Version : انجام اعمال محاسباتی در فیلد



majoran
چهارشنبه 24 بهمن 1386, 09:35 صبح
با سلام من می خوام مقدار یک فیلدمو با ضرب کردن دو مقدار در دو جدول متفاوت دیگر بدس بیارم باید چیکار کنم متشکرم

reza_rad
چهارشنبه 24 بهمن 1386, 09:43 صبح
با سلام من می خوام مقدار یک فیلدمو با ضرب کردن دو مقدار در دو جدول متفاوت دیگر بدس بیارم باید چیکار کنم متشکرم
چرا می خواهید چنین محاسباتی رو در یک فیلد ذخیره کنید؟!
هر وقت نیاز بهش داشتید محاسبه کنید و نشون بدید. اینجوری مشکل Redundancy نخواهید داشت.

majoran
چهارشنبه 24 بهمن 1386, 09:54 صبح
من میخوام شهریه هر دانشجو رو حساب کنم برای همین باید مقدار شهریه هر درس رو داشته باشم و شهریه هر درس هم باید از فیلد واحد عملی و نظری محاسبه بشه که برای این کار اصولا من باید
شهریه عملی *تعداد واحد عملی+شهریه نظری*تعداد واحد نظری
که این کار یکم منو سر در گم کرده باید چیکار کنم

reza_rad
چهارشنبه 24 بهمن 1386, 10:17 صبح
دو راه دارید:
1- اینکار رو از سمت application انجام بدید. این راه ساده تر هست
2 - اینکار رو از سمت دیتابیس انجام بدید که کمی مشکلتر هست چون باید با Transact SQL پیاده سازیش کنید.
برای حالت دوم شما نیاز به چند کوئری داری:
یکی شهریه هر واحد عملی رو از جدولش بخونه
یکی تعداد واحد های عملی اون شخص رو از جدول دیگه حساب کنه
همین کار برای واحدهای نظری هم باید انجام بشه

شاید بشه تمام اینها رو در یک کوئری ترکیب کرد یا در یک procedure . من چون ساختار جدولهای شما رو نمی دونم نمی تونم کوئری تون رو بنویسم.

majoran
چهارشنبه 24 بهمن 1386, 10:23 صبح
آقا سلام
هرچی لازم داری بگو تا من برات توضیح بدم خیلی اساسی لازم دارم به این راه حل

reza_rad
چهارشنبه 24 بهمن 1386, 11:01 صبح
خودتون هم می تونید این کوئری رو بنویسید بهتره بگید مشکلتون توی تهیه کدومیک از کوئریهایی که گفتم هست تا حلش کنیم.

majoran
چهارشنبه 24 بهمن 1386, 14:08 عصر
اصلا من الان سر در گم سر در گم هستم کوری که می خادو باید کجای مای اسکیوال اضافه کنم و چهکوری بنویسم اگه یک لطفی کنید و برام بنویسید به عنوان تست متشکر میشم

reza_rad
چهارشنبه 24 بهمن 1386, 14:45 عصر
کوری که می خادو باید کجای مای اسکیوال اضافه کنم و چهکوری بنویسم
دوست عزیز شما باید این کوئری رو در زبانی که از اونجا دارید application تون رو می نویسید، استفاده کنید. یعنی مثلا از توی PHP این کوئری رو بنویسید.
اما برای تست کوئری می تونید از محیط هایی که واسط دیتابیس دارند استفاده کنید مثل mysql query browser یا phpmyadmin یا ...
برای نمونه این رو ببینید:



<?php
// This could be supplied by a user, for example
$firstname = 'fred';
$lastname = 'fox';

// Formulate Query
// This is the best way to perform a SQL query
// For more examples, see mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));

// Perform Query
$result = mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}

// Free the resources associated with the result set
// This is done automatically at the end of the script
mysql_free_result($result);
?>

majoran
چهارشنبه 24 بهمن 1386, 17:15 عصر
متشکرم دوست عزیز ولی این خیلی پیچیده شد داخل خود مای اسکیول نمیشه همچین کاری رو کرد که به صورت اتوماتیک مقدارو محاسبه کنه

reza_rad
شنبه 27 بهمن 1386, 09:41 صبح
داخل خود مای اسکیول نمیشه همچین کاری رو کرد که به صورت اتوماتیک مقدارو محاسبه کنه
شما می تونید داخل Mysql اینکار رو بکنید و هیچ مشکلی هم پیش نمیاد . منتها برای نشون دادن دیتای mysql در هر زبان نیاز به خوندن دیتا از دیتابیس و نشون دادنش روی فرم تون دارد. کدی که من گذاشتم یک مثال از همین بود:

اصلا من الان سر در گم سر در گم هستم کوری که می خادو باید کجای مای اسکیوال اضافه کنم و چهکوری بنویسم اگه یک لطفی کنید و برام بنویسید به عنوان تست متشکر میشم

majoran
شنبه 27 بهمن 1386, 18:47 عصر
متشکرم دوست عزیز و لی به نظر خودم این کار رو سمت اپلیکیشنم بزارم بهتره