ورود

View Full Version : مشکل در کد نویسی و ارتباط دو جدول



emdadgar_shahed
شنبه 06 شهریور 1389, 17:08 عصر
سلام
من در برنامه ام یک جدول دارم به نام Course که دارای فیلدهای زیر هست:
کد درس code
نام درس name
-----------------------------------------------
جدول دیگر من جدول درس گذرانده شده Regdars است با محتویات زیر :
کدملی codem
کد دوره coded
کد درس1 dars1
کددرس2 dars2
** چون هر کاربر فقط دو کد درس را در هر دوره می گذرانند هر دو درس را در این جدول کنار هم آورده ایم ***
حال می خواهیم با فراخوانی تیبل های بالا خروجی زیر را داشته باشیم .

کد ملی / کد دوره / نام درس1 / نام درس 2

نحوه کد نویسی SQL آن برای فراخوانی نام درس ها چطور هست ؟
ممنون

yaseriran
شنبه 06 شهریور 1389, 17:32 عصر
درود!

شما باید یک فیلد مشترک بین دو جدول داشته باشید و بعد query بگیرید.

یا هدف دیگه ای داشتید و من متوجه نشدم؟!!!!




برای خراب کردن یک حقیقت، خوب به آن حمله نکن، بد از آن دفاع کن...

MOJTABAATEFEH
شنبه 06 شهریور 1389, 18:23 عصر
سلام
من در برنامه ام یک جدول دارم به نام Course که دارای فیلدهای زیر هست:
کد درس code
نام درس name
-----------------------------------------------
جدول دیگر من جدول درس گذرانده شده Regdars است با محتویات زیر :
کدملی codem
کد دوره coded
کد درس1 dars1
کددرس2 dars2
** چون هر کاربر فقط دو کد درس را در هر دوره می گذرانند هر دو درس را در این جدول کنار هم آورده ایم ***
حال می خواهیم با فراخوانی تیبل های بالا خروجی زیر را داشته باشیم .

کد ملی / کد دوره / نام درس1 / نام درس 2

نحوه کد نویسی SQL آن برای فراخوانی نام درس ها چطور هست ؟
ممنون

دوست عزیز به صورت زیر انجام بدین:


SELECT Regdars.codem,Regdars.coded,course.name from regdars inner join course on regdars.dars1=course.code or regdars.dars2=course.code

emdadgar_shahed
شنبه 06 شهریور 1389, 21:27 عصر
ممنون از پاسخی که دادید
برای این برنامه فیلد کددرس code در corse با کد درس dars1 و dasr2 در Regdars ارتباط دارند تا خروجی کد درس 1 و کد درس 2 به جای نمایش کد درس ، نام درس را نمایش دهد
مشکل اینجاست که با این نمونه کد ، فقط یکی از دروس را نشون میده
دلیل اون هم اینه که در این کد course.code را برای هم درس یک و هم درس دو با هم فراخوانی کردیم که در نتیجه خروجی برای هر دو یکی میشه ؛ یعنی هر دو درس را یکی نشون میده . در واقع کد درس از جدول کورس را برای هر دو درس یکی انتخاب می کند.
regdars.dars1=course.code or regdars.dars2=course.code

emdadgar_shahed
شنبه 06 شهریور 1389, 23:08 عصر
راه کار چیست؟

MOJTABAATEFEH
یک شنبه 07 شهریور 1389, 12:38 عصر
ممنون از پاسخی که دادید
برای این برنامه فیلد کددرس code در corse با کد درس dars1 و dasr2 در Regdars ارتباط دارند تا خروجی کد درس 1 و کد درس 2 به جای نمایش کد درس ، نام درس را نمایش دهد
مشکل اینجاست که با این نمونه کد ، فقط یکی از دروس را نشون میده
دلیل اون هم اینه که در این کد course.code را برای هم درس یک و هم درس دو با هم فراخوانی کردیم که در نتیجه خروجی برای هر دو یکی میشه ؛ یعنی هر دو درس را یکی نشون میده . در واقع کد درس از جدول کورس را برای هر دو درس یکی انتخاب می کند.
regdars.dars1=course.code or regdars.dars2=course.code

دوست عزیز به صورت زیر انجام بده ببین مشکل شما حل میشه:


SELECT Regdars.Codem,Regdars.Coded,(select name from course where code=regdars.dars1) as d1,(select name from course where code=regdars.dars2) as d2 FROM Regdars


موفق باشید

emdadgar_shahed
یک شنبه 07 شهریور 1389, 17:01 عصر
SQL.Add('Select uprop.*,uproph.*,paye.*,dprop.*,Regdars.*,(select cnamed from course where ccoded=Regdars.dars1) as d1 )'
+',(select cnamed from course where ccoded=Regdars.dars2) as d2 from Regdars');


SQL.Add('Select T1.*,T2.*,T3.*,T4.*,T5.*,T6.* from uprop T1,dprop T2,uproph T3,Regdars T4,paye T5,course T6 where T3.ucodemh=T1.ucodem and T2.salmd=:a and T4.coded=T2.coded and T4.codem=T1.ucodem '
+'and (select T6.cnamed where T6.ccoded=T4.dars1) as d1) and (select T6.cnamed where T6.ccoded=T4.dars2) as d2');سلام
ممنون کدی که ارسال فرمودید جواب داد . بی نهایت سپاس و تشکر .
الان با مشکل جدیدی برخوردم وقتی می خوام با کدهای تیبل های دیگم از کوئری فراخوانی کنم و در خروجی بگیرم اررو میده ، فکر می کنم کدنویسی این بخش را اشتباه نوشته باشم .
دونمونه کدنویسی بالا و نوع های دیگه را تست زدم ولی جواب نگرفتم و اررو میده . مشکل چیه ؟

MOJTABAATEFEH
دوشنبه 08 شهریور 1389, 10:50 صبح
دوست عزیز لطفا توضیح بیشتری بدین

emdadgar_shahed
دوشنبه 08 شهریور 1389, 17:27 عصر
از حوصله ، همراهی و بزرگواری شما بی نهایت سپاسگذارم :قلب:
کدی که شما زحمت کشیدید و اونو ارسال کردید جواب داد . حالا من می خوام این کد را با یه سری کد دیگه ترکیب کنم و در خروجی چاپ از اون استفاده کنم .
در واقع می خوام مشخصات فردی و درسی و ... را در این خط فرمان اس کیو ال فراخوانی و سپس در خروجی فرم چاپ از اون استفاده کنم .
اما نم یدونم چطور باید کد جدیدی که ارسال کردید را در خط فرمان های دیگه ترکیب و استفاده کنم .
دو کد بالایی که در بالا درج کردم دو نمونه روشی است که من برای استفاده همزمان کد ارسالی شما و کد خودم بکار بردم که در هیچ یک از این دو روش جواب نداده و ارور میده .
می خواستم بدونم چطور می تونم کدی که ارسال کردید را با کد های خودم ترکیب کنم (روش صحیح این کار را می خواستم بدونم )

emdadgar_shahed
دوشنبه 08 شهریور 1389, 21:35 عصر
:متفکر: :افسرده:

MOJTABAATEFEH
سه شنبه 09 شهریور 1389, 10:50 صبح
از حوصله ، همراهی و بزرگواری شما بی نهایت سپاسگذارم :قلب:
کدی که شما زحمت کشیدید و اونو ارسال کردید جواب داد . حالا من می خوام این کد را با یه سری کد دیگه ترکیب کنم و در خروجی چاپ از اون استفاده کنم .
در واقع می خوام مشخصات فردی و درسی و ... را در این خط فرمان اس کیو ال فراخوانی و سپس در خروجی فرم چاپ از اون استفاده کنم .
اما نم یدونم چطور باید کد جدیدی که ارسال کردید را در خط فرمان های دیگه ترکیب و استفاده کنم .
دو کد بالایی که در بالا درج کردم دو نمونه روشی است که من برای استفاده همزمان کد ارسالی شما و کد خودم بکار بردم که در هیچ یک از این دو روش جواب نداده و ارور میده .
می خواستم بدونم چطور می تونم کدی که ارسال کردید را با کد های خودم ترکیب کنم (روش صحیح این کار را می خواستم بدونم )

دوست عزیز اگر امکان داره فایل دیتابیس رو قرار بدین اینجوری سریعتر به جواب می رسین

emdadgar_shahed
سه شنبه 09 شهریور 1389, 14:08 عصر
دیتا بیس اتچ شد
اگه ممکنه در یک فراخوانی اون کدی که قبلا ارسال کرده بودید را بهمراه فراخوانی برخی پارامترها را جهت خروجی در چاپ نیاز هست . (مثلا فراخوانی همان کد قبلی بهمراه کلیه موارد جدول پایه جهت خروجی چاپ)
ممنون

emdadgar_shahed
چهارشنبه 10 شهریور 1389, 14:37 عصر
از دوستان کسی پیشنهاد و یا راهکاری نداره ؟
کمـــــــــــــــــــــــ ــــــــــک :افسرده:

emdadgar_shahed
جمعه 12 شهریور 1389, 14:37 عصر
از اینکه دوستان همراهی کردند تا به جواب برسیم متشکرم !!!!!!!
بعد از گذشت چند روز لینک بالا حتی بازدید هم نشده !!!!!!!!!! چه برسه به جواب !!!!!!!!!
از جناب MOJTABAATEFEH بابت همراهیشون متشکرم .
بالاخره جواب را به هر سختی بود بدست آوردم میگذارم تا سایر دوستان در صورت نیاز بهره برداری کنند.



SQL.Add('Select uname,ufamily,unamefa,ucodem,ushsh,udateb,umagh,us henase,umorabi,ujanbazi,ujebhe,uazade,uhesab,ubank '
+',usalm,ushoghl,ushaghel,ufogholade,usayer,usums, unorm,onvand,datesd,datepd,salmd,placed,cnamed,cco ded'
+',codec,convand,czaribd,czaribsd,czteori,pcheck,p bank,pdate,teori,amali,amalis,codecc,teorii,amalii ,amaliss'
+',pfar,pfarn,pmoa,pmoan,pmodi,pmodin,pmaso,pmason ,ptanzi,ptanzin,bankn,hesabn,pprice'
+',(select cnamed from course where ccoded=codec) as dd1'
+',(select cnamed from course where ccoded=codecc) as dd2 '
+' from uprop,uproph,paye,dprop,hoghoogh,course,bankname') ;


که البته بازم ادامه داره با شرط های خاص که دیگه از اونا صرفه نظر کردم.
پیروز ، موفق باشید