ورود

نسخه کامل مشاهده نسخه کامل : راهنمایی در دستورات SQL



L u K e !
02-05-2010, 17:36
من یه مشکل دارم با دستورات SQL وقتی این دستور رو اجرا می کنم باید 4 تا رکورد جواب بده ولی 7 بار اون 4 تا رکورد رو پشت سر هم می یاره ریلشنشم درسته وقتی FROM Student خالی می نویسم درست می شه ولی اون مقدار ها مثل School.Name یا اینایی که به جدول های دیگه مربوتن خالی می یاره





برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

anvar.net
02-05-2010, 22:49
من فکر می کنم که ساختار بانک شما استاندارد نیست,

شما بهتره از کلیدهای اصلی و خارجی برای تمامی ستونهای کلیدی در جداول استفاده کنید, در اون صورت براحتی با Join میشه اطلاعات رو واکشی کرد.

L u K e !
04-05-2010, 16:07
خوب من این کار و کردم بانکش ردیفه
فقط با Join مشکل دارم چطوری نوشته می شده ؟
دستور بالا رو چطوری می شه با Join نوشت ؟

anvar.net
04-05-2010, 16:45
من مختصرا راهنماییت می کنم , تا خودت بهتر بتونی مفهوم Join رو یاد بگیری و از لذتش کیفور بشی [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]!!!

JOIN : ارتباط منطقی بر اساس یه رابطه منطقی مثل کلید اصلی و خارجی بین حداقل 2 جدوله که امکان انتخاب داده ها رو از هر دو جدول و نمایش در یک جدول مشترک فراهم می کنه. همه تلفیق ها بر اساس کلیدهای اصلی و خارجی نیستن و شما می تونی بر اساس هر چیز مشترکی بین جدوال تلفیق ایجاد کنی.

تو مثال بالا ما سه جدول Student ؛ School و City داریم.

جدول اصلی ما در بین سه جدول فوق جدول Student هست که دارای ستونی با کلید اصلی به نام STID هست. جدول school هم دارای ستونی به نام SCHID هست که کلید اصلی جدول هست و در جدول City هم کلید اصلی ستونی به نام CITID وباشد.

*** در جدول Student بجز ستون اصلی دارای 2 کلید خارجی به نام SCHID و CITID هستیم که مشخص کننده مدرسه و شهر دانش آموز می باشند. در واقع در این دو ستون از کلید های اصلی دو جدول دیگه استفاده می کنیم و اسم مدرسه یا شهر رو نمی نویسم.

به زبان ساده واسه مثال شما میشه


Select Code, Name,Family, Moadel, Reshte,Schoolname,Ostan,shahr,Shahrestan
From Student
Inner Join School on Student.SCHID=School.SCHID
Inner Join City on Student.CITID=City.CITID
Order By Name


چون دو ستون داریم که هر دو Name هستند اسم یکی رو عوض کنید Name of student و Name of school

L u K e !
08-05-2010, 18:29
این چرا اینطوری می کنه ؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


این خطا رو می ده ولی وقتی Ok می کنی School.Name رو HighLight می کنه

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


اینم از دیتابیس با Access 2007 ه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینم Realtion ش



[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

L u K e !
08-05-2010, 19:00
وقتی که یه دونه از اون Inner Join ها رو پاک می کنم درست می شه

anvar.net
08-05-2010, 23:11
جنابعالی دقت نکردید من چی نوشتم


Select Code, Name,Family, Moadel, Reshte,Schoolname,Ostan,shahr,Shahrestan
From Student
Inner Join School on Student.SCHID=School.SCHID
Inner Join City on Student.CITID=City.CITID
Order By Name





Select Student.Name,City.Ostan,School.Name
FROM Student
Inner Join City on Student.CityCode =City.CityCode
Inner Join School on Student.SchoolCode=School.SchoolCode



معنای Student.Name و City.Ostan و School.Name چیه ؟

اشتباهت همینجاست !!!

L u K e !
09-05-2010, 14:37
چرا توجه کردم
اول اینجوری نوشته بودم
ولی بازم همون خطا رو می ده

majj
10-05-2010, 07:37
من اکسس 2007 ندارم وگرنه کمکت میکردم ولی از خطای داده شده (sуntax error ) میشه فهمید که شما یک خطای دستوری دارین یعنی طریقه نوشتن دستورتون اشتباهه

anvar.net
10-05-2010, 21:28
بله من هم تست کردم متاسفانه تو اکسس ارور می ده.

ولی من از نمونه ای مشابه همین تو SQL استفاده می کنم ولی درست کار می کنه

شما تو اکسس از دستور زیر استفاده کن


SELECT Student.Name, Student.Family, City.Ostan, City.Shahr, School.SchoolName
FROM (City INNER JOIN School ON City.CityCode=School.CityCode) INNER JOIN Student ON (School.SchoolCode=Student.SchoolCode) AND (City.CityCode=Student.CityCode);



اسم تمامی ستون ها رو من ننوشتم شما خودتون با بانک اصلی تطبیقش بدبد