إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

مشكلة في بناء جملة Select


9 رد (ردود) على هذا الموضوع

#1 manfrompal

manfrompal

    عضو

  • الأعضــاء
  • 28 مشاركة

تاريخ المشاركة 26 December 2007 - 09:23 AM

السلام عليكم ورحمة الله وبركاته
طلبي هو
أريد أن أبني جملة SELECT يكون مخرجاتها جميع التواريخ بين تارخين معينين
يعني مثلا بين 1/11/2007 الى 1/12/2007 يعطيني جميع التواريخ بينهم
بشرط حذف التواريخ التي ترافق يوم الجمعه
فكرت فيها بس ما عرفت كيف أعملها
يا ريت مساعده
تحيتي

#2 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 26 December 2007 - 04:25 PM

طيب هل انت عندك جدول مثلا مسجل به التواريخ؟

#3 asd202

asd202

    عضو نشط

  • الأعضــاء
  • 405 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 26 December 2007 - 05:01 PM

select * from table_name where date between('01-nov-2007' and '01-dec-2007')
'and to_char(date,'day')<>'friday'

begin

for i in REVERSE 1..100000

loop

message('اللهم ارحمنا');

end loop;

end;

#4 hanyfreedom

hanyfreedom

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,481 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Chess , Sudoku

تاريخ المشاركة 27 December 2007 - 01:40 AM

select to_char ( trunc(sysdate,'month') + rownum-1 , 'dd-mm-yyyy' ) Month_days from emp,dept where trunc(sysdate,'month')+ rownum-1 <= last_day(sysdate);



emp,dept is used only to generate the rows for rownum.
emp contains 14 rows and dept contains 4 rows so that total of 56 rows
can be generated with the product of these two tables



هذا رد وجدته فى موضوع مشابه لموضعك فى منتدى اجنبى ....... و لكن الاجابة الافضل هى أجابة أخى asd202

تم التعديل بواسطة hanyfreedom, 27 December 2007 - 01:43 AM.


#5 manfrompal

manfrompal

    عضو

  • الأعضــاء
  • 28 مشاركة

تاريخ المشاركة 27 December 2007 - 06:01 AM

بسم الله
بداية شكرا لكل من رد علي
أآول شي ردي محمد سعيد وهو سؤال مربط الفرس
هو انني ليس عندي جدول لاستراجع اي تاريخ ما
أي القصد أنا أريده من الجدول dual وليس كما ذُكر في رد الاخوه

#6 asd202

asd202

    عضو نشط

  • الأعضــاء
  • 405 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 December 2007 - 06:20 PM

بسيطة غير كلمة
TABLE NAME--------->DUAL
DATE--------------->SYSDATE
وذلك فى الكود السابق
begin

for i in REVERSE 1..100000

loop

message('اللهم ارحمنا');

end loop;

end;

#7 diya_almuzaffar

diya_almuzaffar

    مشترك

  • الأعضــاء
  • 51 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 December 2007 - 10:37 PM

مرحبا

ممكن تجرب هذا الكود . هذا الكود يقوم بأخذ تاريخين ويتم اظهار التواريخ التي يكون فيها اليوم الجعة.

هذا الكود قم بوضعه في فورم.

كـود SQL

declare
x varchar2(100);
i number;
startdate date;
enddate date;
endloop number;
begin
startdate := sysdate;
enddate := sysdate + 10 ;
endloop := enddate - startdate;
message(endloop);
message(endloop);
for i in 0..endloop loop
select to_char(startdate + i , 'dd')
into x
from dual;
message(x);
if x = '&Ccedil;&aacute;&Icirc;&atilde;&iacute;&Oacute;' then
message('friday');
message('friday');
end if;

end loop ;
end;

بالتوفيق

#8 manfrompal

manfrompal

    عضو

  • الأعضــاء
  • 28 مشاركة

تاريخ المشاركة 30 December 2007 - 08:31 AM

بداية شكرا للجميع
ثانيا بالنسبه لرد الاخ ASD
اذا وضعنا جملة ال SQL كما وضعتها انت تخرج النتائج غير صحيحه
بالنسبه للاخ DIYA انا كنت بدي يكون في ال SQL
ع كل حال انا وجدت حل بإنشاء جدول نسميه مثلا INTEGERS
وانخزن فيه ارقام من مثلا 0 الى 360 حسب الحاجه
بعدين نكتب جملة ال SQL التاليه

select TO_DATE('02/09/2007','DD/MM/YYYY') + i
  from integers
 where TO_DATE('02/09/2007','DD/MM/YYYY') + i
	<= TO_DATE('20/12/2007','DD/MM/YYYY');

تحيتي للجميع

#9 diya_almuzaffar

diya_almuzaffar

    مشترك

  • الأعضــاء
  • 51 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 02 January 2008 - 11:27 PM

شكرا لك. اشكرك على افادتنا ممكن توضح اكتر



شكرا

#10 manfrompal

manfrompal

    عضو

  • الأعضــاء
  • 28 مشاركة

تاريخ المشاركة 03 January 2008 - 09:13 AM

تكرم أخي
بداية الفكره في الحل هو اننا نعمل loop
بس بطيرقه غير مباشره
وكل الذي فعلته هو إنشاء جدول اسمه integers على سبيل المثال
هذا الجدول يتكون من حقل واحد وهو i
في هذا الحقل خزنت فيه ارقام من 1 الى 360
لان حاجتي لإسترجاع بين تاريخين لن تتعدى سنه
وبعد ذلك كتبت الquery في اعلى ردي وإشتغل تمام
أي إستفسار حاضرين احنا