PDA

View Full Version : راهنمایی در دستورات SQL



L u k e
شنبه 18 اردیبهشت 1389, 19:53 عصر
این چرا اینطوری می کنه ؟




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

این خطا رو می ده ولی وقتی Ok می کنی School.Name رو HighLight می کنه
وقتی یکی از Inner join ها رو پاک می کنم درست می شه ؟
چرا ؟


http://www1.upic.ir/images/xcurtkrd5op4d2qfwzj.jpg


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


http://www.2shared.com/file/Tqjx6nPE/Database.htmlاینم Realtion ش



http://www1.upic.ir/images/4e13ly9g0t8i01zo1mt1.jpg


من می خوام وقتی یه چیزی با Where اون دستور Select بالایی سرچ کردم
مثلا به جای مقدار SchoolCode ، نام مدرسه رو بیاره
و به جای مقدار CityCode نام شهر رو بیاره

AminSobati
شنبه 18 اردیبهشت 1389, 21:55 عصر
سلام دوست عزیزم،
شما بین City و Student دو ارتباط دارین، یکی مستقیم و یکی به واسطه School. علت این کار چی هست؟

L u k e
یک شنبه 19 اردیبهشت 1389, 15:03 عصر
من به اون کار ندارم اون واسه محل سکونت دانش اموز ه که از اون استفاده کردم
و هر دانش اموزی یه مدرسه ای می ره و هر مدرسه ای باید یه محل داشته باشه
خوب این چه ربطی به سوال من داشت ؟

من با اون کاری ندارم

محمد سلیم آبادی
یک شنبه 19 اردیبهشت 1389, 15:23 عصر
من به اون کار ندارم اون واسه محل سکونت دانش اموز ه که از اون استفاده کردم
و هر دانش اموزی یه مدرسه ای می ره و هر مدرسه ای باید یه محل داشته باشه
خوب این چه ربطی به سوال من داشت ؟

من با اون کاری ندارم

احتمالا منظور ایشون این بوده که نیازی به مشخص کردن شهر برای هر دو موجودیت دانش آموز و مدرسه نبوده است. یعنی عموما هر دانش آموزی در شهر خودش به مدرسه می رود.

البته این کاری که کردین کار درستی به نظر می رسه.

اینجا تالار SQL Server هست. ممکنه اشکالاتی که از کد شما گرفته میشود در اکسس در اسکیول اتفاق نیوفتد.

این کد زیر از نظر منطق و syntax کاملا درست هست:


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


ویرایش:
در تصویر پیغام خطایی که نمایش دادین در خط آخر SchoolCod به جای SchoolCode نوشته شده است.

L u k e
یک شنبه 19 اردیبهشت 1389, 18:12 عصر
نه عزیز اون مشکل نداره
نمی دونم چرا اونطوری نوشته
ولی من چک کردم درست وارد کرده بودم
نمی شه از 2 تا سلکت استفاده کرد
و توی هر سلکت از یه دستور جوین ؟
بعد یه کاری کرد که فیلد ها به هم بچسبن

محمد سلیم آبادی
یک شنبه 19 اردیبهشت 1389, 18:51 عصر
این syntax چی از این هم ایراد میگیره؟


Select St.Name, C.Ostan, Sc.Name
FROM Student St, City C, School Sc
WHERE St.CityCode = C.CityCode
AND St.SchoolCode = Sc.SchoolCode

L u k e
یک شنبه 19 اردیبهشت 1389, 19:32 عصر
اره اورد
ولی اونجوری بهتره
راهی نیست تا همین قبلیه ردیف بشه ؟

محمد سلیم آبادی
دوشنبه 20 اردیبهشت 1389, 04:20 صبح
نمی شه از 2 تا سلکت استفاده کرد
و توی هر سلکت از یه دستور جوین ؟
بعد یه کاری کرد که فیلد ها به هم بچسبن

ببین این جواب میده:


SELECT D.Name, D.Ostan, Sc.Name
FROM
(
SELECT * FROM Student St JOIN City C ON St.CityCode = C.CityCode
)D JOIN School Sc on St.SchoolCode=D.SchoolCode