الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Between تقوم بإرجاع كل البيانات وليس المدى المحدد فقط؟

بدأه ylazez في 20 نوفمبر 2008 · 2 رد · 1,014 مشاهدة · في قواعد بيانات MySQL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لدى قاعدة بيانات ماى سيكول لتخزين الفواتير بها جدول اسمه orders

لتخزين order number,order date,order price

التاريخ اقوم بتخزين ك text

لانى اخزنه على شكل فورمات معين والتاريخ ممكن يتكرر اكثر من مره كالتالى

1:11:2008

1:11:2008

2:11:2008

2:11:2008

3:11:2008

3:11:2008

4:11:2008

5:11:2008

5:11:2008

6:11:2008

7:11:2008

7:11:2008

.

.

.

وانا اريد حساب عدد الفواتير فى الفترة من

1:11:2008 >> 7:11:2008

ولذالك قمت باستخدام الكيورد BETWEEN

ولكن المشكلة انها بترجع كل الريكوردز اللى فى التيبل مش الريكوردز اللى انا محددها ده بسبب تكرار البيانات صحيح؟

اذن ما العمل لحل هذه المشكلة انا اريد حساب عدد الفواتير فى هذه الفترة المحددة مع مراعاة ان تاريخ اليوم ممكن يتكرر؟

try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection c1 = DriverManager.getConnection("jdbc:mysql://localhost/stock", "root", "sys");
			Statement s1 = c1.createStatement();
			sdate="1:11:2008";edate="8:11:2008";
			String query="SELECT * FROM orders WHERE bill_date BETWEEN "+"'"+sdate+"'"+" AND "+"'"+edate+"'";
			ResultSet rs1 = s1.executeQuery(query);
			int count=0;double total=0;
			while (rs1.next()){
			count++;
			double price=rs1.getDouble(6);
			total +=price;
			}
			s1.close();rs1.close();c1.close();
		  System.out.println("Number Of Orders: "+count);
		  System.out.println("Total Sellings: "+total);
	  }catch(Exception e){e.printStackTrace();}

تم تعديل هذه المشاركة بواسطة ylazez في 20 نوفمبر 2008 في 13:41

#2

تعامل مع التاريخ بهذه الصيغة

2000-01-01

أما بخصوص سطر SQL فاستخدام <= و >= هكذا

SELECT * FROM orders WHERE bill_date >= '2000-01-01' AND  bill_date <= '2008-01-01'

تم تعديل هذه المشاركة بواسطة asm-soft في 20 نوفمبر 2008 في 21:09

forum-signature-01.gif
#3

شوف يا عزيزي

between تعمل بشكل صحيح إذا كان الحقل رقمي أو تاريخ

انت مخزن حقل التاريخ على اساس انه نص وبالتالي between لن تعمل بشكل صحيح

ولا حتى استعلام

SELECT * FROM orders WHERE bill_date >= '2000-01-01' AND bill_date <= '2008-01-01'

حاول بحل من 2

1- حول الحقل في قاعدة اليانت اللي عند لتاريخ بدلاً من نص

2- اعمل حقل محسوب بيحول حقل التاريخ النص اللي انت عامله لتاريخ حقيقي وبعدين خلي الشرط على هذا الحقل

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…