PDA

نسخه کامل مشاهده نسخه کامل : یک سوال پایگاه داده sql



نازنین زهرا
26-06-2009, 12:13
پایگاه داده وب سایت اطلاع رسانی در مورد بازیهای جام جهانی فوتبال
مشکل من این است که:
نام بازیکنان یا بازیکنانی ر ا بیابید که د جام 1998 بیشترین گل را زده اند :(بیشترین اش را چگونه باید مشخص کنیم)
نام های بازیکنان و شناسه شخص در جدول person
بازیکنان تیم ها در هریک از جام ها در جدول team_player
اطلاعات گل های زده شده در بازی های مختلف در جدول goals
من می توانم نام بازیکنان را برگردانم ولی بیشترین گل نه
خواهشن راهنمایی کنید؟
اینم پایگاه دادهام که ساختم


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

عــــلی
26-06-2009, 12:41
سلام خسته نباشید:
برای بزرگترین:

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

برای کوچکترین:


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


موفق باشید.

نازنین زهرا
26-06-2009, 17:47
خودم می دونم بزرگترین را از تابع maxو کوچکترین min
ویژگی های جدول goal :
goals:شماره گل زده شده (هر گلی که زده می شود یک شماره دارد)
id: شماره فردی که گل را زده است
cup: شماره جام
اگر من روی ویژگی goals تابع max را استفاده کنم می دانید چی می شه بزرگترین شماره گل را برمی گرداند
و اگر با تابع count گل های زده شده را در جام 1998 شمارش کنم فقط تعد اد گل های زده شده بدست می اید
نمی شود مشخص کرد که بیشترین گل را چی کسی زده است
من سوالم این است که چگونه بیشترین گل زده شده را مشخص کنم .

عــــلی
26-06-2009, 22:23
سلام خسته نباشید.
من کد زیر رو براتون نوشتم ولی از Expr1 خطا میگیره میگه تعریف نشده اگه بتونین درستش کنین مشکلتون حل میشه.اگه درستش کردین لطفاً بگین ما هم استفاده کنیم ممنونم.

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

موفق باشید.

نازنین زهرا
27-06-2009, 06:23
تا انجایی که من اطلاع دارم وقتی از as استفاده می شود یعنی نام ستون خروجی را تعیین کن ونمی توانم این نام را در داخل quary استفاده کرد

نازنین زهرا
27-06-2009, 06:24
select names
from person
where id in(select id
from gols
group by id
having (count(id)>max(id)))

نازنین زهرا
27-06-2009, 06:29
من این quary را نوشتم ولی فقط وقتی که id فرد کوچکتر از بزرگترین id یعنی 12 بود جواب می دهد ولی اگر فردی که گل را زده id اش 12 بود نمی تواند نامش را برگرداند
می دانم quaryام غلط است ولی من فکرمی کنم نباید max را استفاده کنم چون max بزگترین عدد در یک ستون را برمی گرداند ایا می شود count و max با هم استفاده شود یعنی اول شمارش کند بعد این شمار ش را به عنوان بزرگترین استفاده کند من این کار کردم ولی به جواب نرسیدم
متشکرم

عــــلی
27-06-2009, 09:54
سلام.

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

من فقط یه مشکل دارم که اگه حل بشه مشکل شما هم حل میشه!

ببینین ما یک جدول به نام Table1 که یک ستون به نام ID داریم(شما فعلاً جدول خودتونو بیخیال و یه جدول ساده مثل این بسازین)

به جدول مقدار های زیر رو بدین:
1
1
2
1
3
4
5
1
2
1
1
5
1

حالا Quary زیر رو اجرا کنین:

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

خوب اونایی که Select میشن شبیه به شکل زیره:

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

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

حالا الان بزرگترین توی ستون Expr1 عدد 7 هست.اگه ما بتونیم این 7 رو با Having یا Max یا هر چیزی Select کنیم همه چیز درست میشه. که من کد زیر رو نوشتم ولی خطا میداد:


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

میگه Expr1 وجود نداره!!

موفق باشید.

نازنین زهرا
27-06-2009, 11:02
ببنید کد شما یک مشکل داره
شما نمی توانید از expr1 استفاده کنید چون
بعد از as هر چیزی نوشته بشه برای خروجی با تو جه به این مقدار های که شما دادید باید عدد 1 که هفت بار تکرار شده بازگرداند ب

نازنین زهرا
27-06-2009, 11:03
کد عکس تان با خطا مواجه شد

عــــلی
27-06-2009, 11:20
مشکل حل شد این کد رو امتحان کنید:

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

موفق و پیروز باشید.

نازنین زهرا
27-06-2009, 12:57
جوا ب سوال فهمیدم باید از create view استفاده کنیم
شرمنده من اسم جدول را گذاشتم ddd
create view zm(id,xp)
as
select id,count(id) as xp
from ddd
group by id
__________________________________________________ ____________________________________
select max(xp)
from zm
اسم create view من zm است
ابتدا create view را می سازیم وبعد که اجرایش با موفقیت انجام شد
create view را پاک می کنیم و بعد با دستور select از ان استفاده می کنیم که دقیقا در ست جواب می دهد

نازنین زهرا
27-06-2009, 17:10
یک کم در مورد کد تان توضیح دهید
top برای چی استفاده کردید
متاسفانه روش شما را زیا د متو جه نشد م روشم خودم وقتی با ید با جدول team جوین کنم چون هیچ وجه اشتراکی ندارد جواب نمی دهد دیگه خسته شدم پس فردا باید تحویل بدهم از 20 تا سوال 2 تاش نتونستم حل کنم این 2 تا را خیلی ساده جواب می دهم متشکرم تا همین جا هم چیزهایی جدیدی یادگرفتم

عــــلی
27-06-2009, 19:04
سلام.
Topنمایش تعداد سطر ها رو مشخص میکنه.
مثلاً مقدار داخل Top را تغییر بدید...
مثلاً اگر 2 باشه دوتا سطر نمایش میده.و چون ما فقط به یک سطر نیاز داشتیم.مقدار را 1 قرار دادیم.
خوب شما هرجا مشکل داشتین بپرسین.چون کنکور نزدیکه پی سی یکم خلوت شده...
موفق باشید.

نازنین زهرا
27-06-2009, 19:21
می شه بگید این کد شما وقتی استفاده می کنیم می خواهیم با یک جدول دیگه جوین کنیم چگونه این کار را باید بکنیم

عــــلی
27-06-2009, 19:50
شما یک مثال بزنید.
مثلاً که چه فیلدی از کدوم جدول رو میخواهید Select کنید و اینکه مثلاً Select کن بیشترین ID از جدول1 که ID برابر با ID1 از جدول دوم باشد.
موفق باشید.

نازنین زهرا
28-06-2009, 18:03
مثلا این کدی که شما نوشتید خروجی اش بشود id با شماره 2
12 بار تکرار شده است
حالا فرض کنید که این id مشخصه یک فردی
که مشخصات این فرد توی جدول namep اولین شرط این که اگه id این تو تا جدول برابر بود نام ان فرد در خروجی نمایش بده
این را چگونه می نویسید باز هم متشکرم

عــــلی
28-06-2009, 20:51
سلام خسته نباشید.
این SQL هم چقدر پیچیدست...

اینم کدی خواستین جدول دوم هم به نام Tbl_Dmarket هست:

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

موفق باشید.