أقوم حاليا بتطوير برنامج حسابي ... وهو دقيق جدا ..
قمت بإنشاء استعلام أدى الواجب المطلوب منه ولكني احس ان الأستعلام طويل ومعقد نوعا ما
فأنا لست خبيرا في مجال قواعد البيانات والأستعلامات المحترفة.
وكنت اتمنى ان توفر سوالف سوفت قسم خاص بقواعد البيانات وطريقة كتابة الأستعلامات.
عموما ..
قمت بإنشاء 3 استعلامات لإظهار سطر واحد فقط .. والمطلوب التقليل من الأستعلامات
الرجاء مراجعة المرفقات لمشاهدة طريقة ظهور البيانات..
-------------------- شرح الأستعلام
1- المطلوب:
- أستخراج مجموع أسعار البضائع ووضعها في فاتورة تظهر المبلغ المستحق ..
- أستخراج مجموع الأرصدة والمبالغ التي دفعها الزبون.
- (جزء قمت بها بشكل جيد) أستخراج المتبقي بعملية حسابية صغيرة .. بطرح مجموع الأرصدة من مجموع أسعار البضائع المشترى.
2- قواعد البيانات:
هناك 4 قواعد ..
أ- images وهي تحوي البضائع
ب- orders .. وهي تحوي الفواتير
ت -orders_receipts .. وهي تحوي الأرصدة
ث - users .. وهي تحوي اسماء العملاء
كود PHP:
-- phpMyAdmin SQL Dump -- version 2.8.2 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generation Time: Jun 19, 2008 at 10:53 PM -- Server version: 5.0.22 -- PHP Version: 5.1.4 -- -- Database: `account` --
CREATE TABLE `orders` ( `id` int(11) NOT NULL auto_increment, `userid` int(11) NOT NULL default '0', `items` text NOT NULL, `amount` decimal(11,3) NOT NULL, `discount` decimal(11,3) NOT NULL, `trans_id` bigint(25) NOT NULL, `payment_id` bigint(25) NOT NULL, `message` text NOT NULL, `date` int(25) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
CREATE TABLE `users` ( `userid` int(10) unsigned NOT NULL auto_increment, `user_group` int(11) NOT NULL, `useremail` varbinary(255) NOT NULL default ' ', `info` text NOT NULL, `fname` varchar(255) character set latin1 collate latin1_bin NOT NULL default '', `company` varchar(255) NOT NULL, `cpr` int(10) NOT NULL, `zip` varchar(15) character set latin1 collate latin1_bin NOT NULL default '', `tel` varchar(255) character set latin1 collate latin1_bin NOT NULL default '', `mobile` varchar(255) NOT NULL, `fax` varchar(255) character set latin1 collate latin1_bin NOT NULL default '', `country` int(11) NOT NULL default '0', `city` varchar(255) character set latin1 collate latin1_bin NOT NULL default '', `website` varchar(255) NOT NULL default '', `pobox` varchar(255) NOT NULL, `area` varchar(255) NOT NULL, `block` varchar(255) NOT NULL, `road` varchar(255) NOT NULL, `building` varchar(255) NOT NULL, `reg_date` int(25) NOT NULL default '0', `photo` varchar(255) NOT NULL default '', PRIMARY KEY (`userid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
///////////////////////// // Figure out the total number of results in DB: $total_results = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM orders "),0);
// Figure out the total number of pages. Always round up using ceil() $total_pages = ceil($total_results / $max_results);
// Build Page Number Hyperlinks if ($total_pages>1){ echo "<center dir='rtl'>اختر الصفحة<br />"; } // Build Previous Link if($page > 1){ $prev = ($page - 1); echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\"><<السابق</a> "; }