ورود

نسخه کامل مشاهده نسخه کامل : انتخاب چند رکورد از هر گروه mysql



omid_bnt
28-02-2016, 06:51
سلام

سه جدول زیر رو در نظر بگیرید در nysql




tbl_country

name ____ id

1 _______un
2 ________ir
3 _______uk




tbl_city


name _______ id_country ____ id

1_____________1 __________c1
2_____________1 __________c2
3_____________1 __________c3
4_____________1 __________c4
5_____________1 __________c5
6_____________2 __________c6
7_____________2 __________c7
8_____________2 __________c8
9_____________2 __________c9
10____________2 __________c10
11____________3 __________c11
12____________3 __________c12
13____________3 __________c13
14____________3 __________c14
15____________3 __________c15




tbl_address

این جدول 45 سطر دارد

name ______ id_country _______ id_city ____ id

add_1 _________ 1 _______==_____ 1 ______ 1
add_2 _________ 1 _______________ 1 ______ 2
add_3 _________ 1 _______________ 1 ______ 3
add_4 _________ 1 _______________ 1 ______ 4
add_5 _________ 1 _______________ 1 ______ 5
add_6 _________ 2 _______==_____ 1 ______ 6
add_7 _________ 2 _______________ 1 ______ 7
add_8 _________ 2 _______________ 1 ______ 8
add_9 _________ 2 _______________ 1 ______ 9
add_10 _________ 2 _______________ 1 _____ 10
add_11 _________ 3 _______==_____1 ______ 11
add_12 _________ 3 ______________ 1 ______ 12
add_13 _________ 3 ______________ 1 ______ 13
add_14 _________ 3 ______________ 1 ______ 14
add_15 _________ 3 ______________ 1 ______ 15

add_16 _________ 1 _______________ 2 ______ 16
add_20 _________ 1 _______________ 2 ______ 20

add_21 _________ 1 _______________ 3 ______ 21
add_30 _________ 1 _______________ 3 ______ 25

add_26 _________ 2 _______________ 2 ______ 26
add_30 _________ 2 _______________ 2 ______ 30

add_31 _________ 2 _______________ 3 ______ 31
add_35 _________ 2 _______________ 3 ______ 35

add_36 _________ 3 _______________ 2 ______ 36
add_40 _________ 3 _______________ 2 ______ 40

add_41 _________ 3 _______________ 3 ______ 41
add_45 _________ 3 _______________ 3 ______ 45




سوال : قسمت اول (مهمترین بخش)

میخوایم از حدول ادرس ، از هرگروه کشور که مثلا کد شهرش1 هست ، سه سطر انتخاب کنیم . مثلا به جدول زیر برسیم


id_city احتمالا WHERE میخوره

ولی برای id_country نمیدونم چیکار کنم از group by _ limit 3 هم نتیجه نگرفتم

برای نمایش نام هر شهر و کشور بجای id هم فکر کنم از inner join استفاده کنیم ایا بهینه است






tbl_result





name ______ id_country _______ id_city ____ id

add_1 _________ 1 _______________ 1 ______ 1
add_2 _________ 1 _______________ 1 ______ 2
add_3 _________ 1 _______________ 1 ______ 3
add_6 _________ 2 _______________ 1 ______ 6
add_7 _________ 2 _______________ 1 ______ 7
add_8 _________ 2 _______________ 1 ______ 8
add_11 ________ 3 _______________ 1 ______ 11
add_12 ________ 3 _______________ 1 ______ 12
add_13 ________ 3 _______________ 1 ______ 13





قسمت دوم این انتخاب با توجه به شرط اولیه (از هرگروه سه تا) به صورت رندم باشد یعنی احتمال نمایش ادرسی با نام add_5 هم وجود داشته باشد



ممنون میشم بهینه ترین راه حل رو بفرمایید:n12:

با تشکر

omid_bnt
29-02-2016, 08:11
سلام خوشبختانه تونستم یه قسمت رو به جواب برسم
کد نهایی در پنج حالت کلی جهت اشنایی و برای استفاده دوستان در زیر قرار دادم



ممکنه syntax هماهنگ با sqlite همین شرایط ( فقط مورد 5 ) رو هم دراختیارم بزارید؟ واقعا مهمه
اگر در خود sqlite همچین کدی قابل پیاده سازی نیست پس اسکریپت php , sqlite رو کمک کنید بنویسم با سپاس فراوان
یک نمومه برای mysql هم در لینک ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]!9/37dc1/23) زیر
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]!9/37dc1/23

کد ساخت دیتابیس جهت تست


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



1



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



2


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




3


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



4

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


:n12:5:V20:
5 - برای انتخاب رندم - به همراه join (کد کامل)


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