-
December 13th, 2019, 03:17
#11
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
starting
درود ببینید
اگر شما اینو تازه دارید طراحی میکنید این ساختار اشتباست ( یعنی نیاز به چندین کوئری هست بستگی به نتیجه شاید صدها کوئری)
ولی اگر طراحی شده باز در یکی از مثالهاتون ذکر کنید اگر یکی بیشتر از دو دوست داشت به چه شکل در فیلد فرند آی دی ذخیره میکنید
با سلام
شرمنده دوست عزیز خیلی زحمتتون دادم
جدول بالا فقط یک مثال بود که من اگه مشابه این جدول بالا رو داشته باشم چطوری می تونم تعداد کاربرانی که مثلا با کاربران کاربر شماره یک درارتباط هستند رو پیدا کنم!
با کوئری که نوشتم تعداد کاربرانی که fid شون 1 هست 6 نفر هستند
این شش نفر هم چند تا کاربر دارن که fid شون یکی از این 6 نفر است!
راهی وجود داره بتونم پیدا کنم چه تعداد با این 6 نفر در ارتباط هستند؟!
-
-
December 13th, 2019 03:17
# ADS
-
December 13th, 2019, 03:31
#12
عضو انجمن
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
Marshall
با سلام
شرمنده دوست عزیز خیلی زحمتتون دادم
جدول بالا فقط یک مثال بود که من اگه مشابه این جدول بالا رو داشته باشم چطوری می تونم تعداد کاربرانی که مثلا با کاربران کاربر شماره یک درارتباط هستند رو پیدا کنم!
با کوئری که نوشتم تعداد کاربرانی که fid شون 1 هست 6 نفر هستند
این شش نفر هم چند تا کاربر دارن که fid شون یکی از این 6 نفر است!
راهی وجود داره بتونم پیدا کنم چه تعداد با این 6 نفر در ارتباط هستند؟!
درود ببینید
من با yii کار نمیکنم ولی تفاوت آنچنانی ندارند با فریمورک مطبوع من
پس کدهایی که میدم لزوما براساس تکمیل نیاز شماست و نمیدونم بهینه هستند یا نه اما بشکل زیر:
1. آی دی همه یوزرهایی که با کاربر شما یک دوست هستند بدست میارید
2. این آرایه رو تبدیل میکنید به یک رشته
3. باز یک کوئری میزنید و دوستان اونا رو پیدا میکنید.
4.این آرایه رو با آرایه اول مرج میکنید
5.یونیک میکنید تا دوستان تکراری حذف شوند
6.مجموع آرایه میشه کل دوستان و دوستان دوستان
کد PHP:
$friend_id= Yii::app()->db->createCommand("select id from all where fid=1")->queryScalar();
$ids=implode($friend_id, ',');
$friend_id2=Yii::app()->db->createCommand("SELECT id FROM all WHERE fid IN ({$ids})")->queryScalar();
$count_all=count(array_unique(array_merge($friend_id,$friend_id2)));
این برای دو مرحله بود اگر بخوایید دوستان دوستان اونا رو هم پیدا کنید باید اینقدر کوئری بزنید و هی بررسی کنید تا جایی که نتیجه بشه نال
این دیتا بیس منطقی نیست
و طراحی این دیتابیس ها هم چیزی نیست اینجا گفته بشه چون راه های مختلفی هست براش هم در یک تبیل واحد هم در دو تیبل
و صد البته با استفاده از نو اسکیو ال یا مای اسکیو ال ورژن 5.7 به بالا و کمک گرفتن از تایپ جیسون
موفق باشید
ویرایش توسط starting : December 13th, 2019 در ساعت 03:32
-
-
December 13th, 2019, 03:41
#13
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
starting
درود ببینید
من با yii کار نمیکنم ولی تفاوت آنچنانی ندارند با فریمورک مطبوع من
پس کدهایی که میدم لزوما براساس تکمیل نیاز شماست و نمیدونم بهینه هستند یا نه اما بشکل زیر:
1. آی دی همه یوزرهایی که با کاربر شما یک دوست هستند بدست میارید
2. این آرایه رو تبدیل میکنید به یک رشته
3. باز یک کوئری میزنید و دوستان اونا رو پیدا میکنید.
4.این آرایه رو با آرایه اول مرج میکنید
5.یونیک میکنید تا دوستان تکراری حذف شوند
6.مجموع آرایه میشه کل دوستان و دوستان دوستان
کد PHP:
$friend_id= Yii::app()->db->createCommand("select id from all where fid=1")->queryScalar();
$ids=implode($friend_id, ',');
$friend_id2=Yii::app()->db->createCommand("SELECT id FROM all WHERE fid IN ({$ids})")->queryScalar();
$count_all=count(array_unique(array_merge($friend_id,$friend_id2)));
این برای دو مرحله بود اگر بخوایید دوستان دوستان اونا رو هم پیدا کنید باید اینقدر کوئری بزنید و هی بررسی کنید تا جایی که نتیجه بشه نال
این دیتا بیس منطقی نیست
و طراحی این دیتابیس ها هم چیزی نیست اینجا گفته بشه چون راه های مختلفی هست براش هم در یک تبیل واحد هم در دو تیبل
و صد البته با استفاده از نو اسکیو ال یا مای اسکیو ال ورژن 5.7 به بالا و کمک گرفتن از تایپ جیسون
موفق باشید
با سلام و درود خدا بر شما دوست عزیزم ببخشید اسمتوت هم نمی دونم
ازتون خیلی ممنونم که جواب دادید
ببخشید چرا از implode استفاده کردید!
توی ساختار جدول من هر کاربر می تونه fid یک کاربر رو داشته باشه
من این کد رو فقط واسه دو لول میخوام
و بازم ببخشید نوشتید 5.یونیک میکنید تا دوستان تکراری حذف شوند!
توی جدول من هر کاربر فقط می تونه با یک کاربر در ارتباط باشه پس فکر کنم کاربر تکراری که دوست دوستان باشه وجود نداره!
بازم از حسن توجه و محبت شما بسیار ممنون و سپاسگزارم
تا دنیا دنیاست منو شرمنده ی خوبی و محبت و دانش خودتون کردید
ویرایش توسط Marshall : December 13th, 2019 در ساعت 03:45
-
-
December 13th, 2019, 03:55
#14
عضو انجمن
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
Marshall
با سلام و درود خدا بر شما دوست عزیزم ببخشید اسمتوت هم نمی دونم
ازتون خیلی ممنونم که جواب دادید
ببخشید چرا از implode استفاده کردید!
توی ساختار جدول من هر کاربر می تونه fid یک کاربر رو داشته باشه
من این کد رو فقط واسه دو لول میخوام
و بازم ببخشید نوشتید
5.یونیک میکنید تا دوستان تکراری حذف شوند!
توی جدول من هر کاربر فقط می تونه با یک کاربر در ارتباط باشه پس فکر کنم کاربر تکراری که دوست دوستان باشه وجود نداره!
بازم از حسن توجه و محبت شما بسیار ممنون و سپاسگزارم
تا دنیا دنیاست منو شرمنده ی خوبی و محبت و دانش خودتون کردید
چون میخوایم به ساختار 5,8,6,7 برسیم تا بتونیم سررچ بزنیم در دیتا بیس
5. خب عزیز شاید یوزر شما 7 با یوزر 5 دوست باشه و یوزر شماره 4 با یزر 5 دوست باشه نه باید یوزر شماره 5 رو دوبار حساب کنیم
- - - Updated - - -
یا کاملتر بگم
در نظر بگیرید در آرایه اول یوزر شماره 5 با یوزر یک مستقیم دوست هست و یوزر 6 هم با یوزر یک مستقیم دوسته
و در مرحله دوم میبینیم یوزر شماره 5 با واسطه باز با یوزر شماه 6 دوسته خب یکبار 5 در آرایه اول هست یکبارم در آرایه دوم وقتی مرج میکنیم یا باید غیرتکراری مرج بشه یا مرج بکنیم و یونیک کنیم که من دومی رو زدم چون ساختار شما برام گم هست و فقط کدی دادم کار راه بیوفته
- - - Updated - - -
ایمپلود هم باید انجام بشه چون ساختار کوئری این در لینک زیر رو ببین
http://jee.ir/tG2vk
ما در دیتا بیس نمیتونیم مستقیم آرایه رو سرچ بزنیم
-
-
December 13th, 2019, 05:27
#15
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
starting
چون میخوایم به ساختار 5,8,6,7 برسیم تا بتونیم سررچ بزنیم در دیتا بیس
5. خب عزیز شاید یوزر شما 7 با یوزر 5 دوست باشه و یوزر شماره 4 با یزر 5 دوست باشه نه باید یوزر شماره 5 رو دوبار حساب کنیم
- - - Updated - - -
یا کاملتر بگم
در نظر بگیرید در آرایه اول یوزر شماره 5 با یوزر یک مستقیم دوست هست و یوزر 6 هم با یوزر یک مستقیم دوسته
و در مرحله دوم میبینیم یوزر شماره 5 با واسطه باز با یوزر شماه 6 دوسته خب یکبار 5 در آرایه اول هست یکبارم در آرایه دوم وقتی مرج میکنیم یا باید غیرتکراری مرج بشه یا مرج بکنیم و یونیک کنیم که من دومی رو زدم چون ساختار شما برام گم هست و فقط کدی دادم کار راه بیوفته
- - - Updated - - -
ایمپلود هم باید انجام بشه چون ساختار کوئری این در لینک زیر رو ببین
http://jee.ir/tG2vk
ما در دیتا بیس نمیتونیم مستقیم آرایه رو سرچ بزنیم
خیلی ممنون از پاسخ و حسن توجه شما ببخشید موقع استفاده از کدهای شما بهم این ارورها رو میده!
array_merge(): Argument #1 is not an array
و
implode(): Invalid arguments passed
و کدها برام کار نمی کنه!
5. خب عزیز شاید یوزر شما 7 با یوزر 5 دوست باشه و یوزر شماره 4 با یزر 5 دوست باشه نه باید یوزر شماره 5 رو دوبار حساب کنیم
ببینید من فقط دنبال یوزرهای با واسطه مستقیم می گردم
یوزرهای با واسطه بعدی میشه لول سوم!
بصورت ساده:
user1 = 3
user 2 = 2
user 3 = 1
user 4 = 7
الان مجموع اینا که با کاربر شماره یک در ارتباط هستن میشه 13
فقط من یه تابع میخوام که این 13 رو برای من محاسبه کنه!
ویرایش توسط Marshall : December 13th, 2019 در ساعت 06:10
-
-
December 13th, 2019, 23:07
#16
عضو انجمن
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
Marshall
خیلی ممنون از پاسخ و حسن توجه شما ببخشید موقع استفاده از کدهای شما بهم این ارورها رو میده!
array_merge(): Argument #1 is not an array
و
implode(): Invalid arguments passed
و کدها برام کار نمی کنه!
ببینید من فقط دنبال یوزرهای با واسطه مستقیم می گردم
یوزرهای با واسطه بعدی میشه لول سوم!
بصورت ساده:
user1 = 3
user 2 = 2
user 3 = 1
user 4 = 7
الان مجموع اینا که با کاربر شماره یک در ارتباط هستن میشه 13
فقط من یه تابع میخوام که این 13 رو برای من محاسبه کنه!
ببینید این کد من بیشتر برای راهنمایی شماست و شما باید سینتکس پایه php رو حداقل بدونید
برای مثال قبل از ایمپلود بررسی بشه این آرایه هست یا نه
و $friend_id1 و $friend_id2 هم ببرسی بشه آرایه هست یا خیر
و برای مثال اگر آرایه نبودن نیاز به مرج کردن نیست و سه حالت پیش میاد
1.اولی و دومی ارایه نیستند {
اولی رو بررسی میکنه اگر نال نبود یک در نظر میگیری و دومی هم بهمین شکل اگر نال بود صفر و اگر نبود یک
}
2.اولی آرایه و دومی نیست {
کانت اولی رو + 1 میکنی اگر دومی نل نبود و اگر نال بود 0 در نضر میگیری
3. برعکس دو
بهمین شکل اینا سینتکس پایه php هستند
ببینید این نیست که ما نخوایم انجام بدیم دقت کرده باشید کلی وقت گزاشتم روی تاپیک هاشی شما (منتی نیست چون در یاد دادن فرآیند تجربی هست که در شرایط کار در بزرگترین شرکتها بدست نمیاد)
اما شما الان مثل کسی هستید که از ما میخواید تیک آف ززن با ماشین ر بهش یاد بدیم ما هنوز نمیدونه کلاچ و دنده چیه
}
-
تعداد تشکر ها از starting به دلیل پست مفید
-
December 13th, 2019, 23:37
#17
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
starting
ببینید این کد من بیشتر برای راهنمایی شماست و شما باید سینتکس پایه php رو حداقل بدونید
برای مثال قبل از ایمپلود بررسی بشه این آرایه هست یا نه
و $friend_id1 و $friend_id2 هم ببرسی بشه آرایه هست یا خیر
و برای مثال اگر آرایه نبودن نیاز به مرج کردن نیست و سه حالت پیش میاد
1.اولی و دومی ارایه نیستند {
اولی رو بررسی میکنه اگر نال نبود یک در نظر میگیری و دومی هم بهمین شکل اگر نال بود صفر و اگر نبود یک
}
2.اولی آرایه و دومی نیست {
کانت اولی رو + 1 میکنی اگر دومی نل نبود و اگر نال بود 0 در نضر میگیری
3. برعکس دو
بهمین شکل اینا سینتکس پایه php هستند
ببینید این نیست که ما نخوایم انجام بدیم دقت کرده باشید کلی وقت گزاشتم روی تاپیک هاشی شما (منتی نیست چون در یاد دادن فرآیند تجربی هست که در شرایط کار در بزرگترین شرکتها بدست نمیاد)
اما شما الان مثل کسی هستید که از ما میخواید تیک آف ززن با ماشین ر بهش یاد بدیم ما هنوز نمیدونه کلاچ و دنده چیه
}
خیلی ممنون و بسیار از شما سپاسگزارم که وقت گذاشتید و به سوال و مشکلات بنده جواب دادید، من هر جوری که می تونستم کدها رو دستکاری کردم و کوئری نوشتم ولی متاسفانه اصلا برام کار نمی کرد، برای همین گفتم از شما اساتید و بزرگواران بپرسم
بازم از,لطف و محبت شما بسیار ممنون و سپاسگزارم
-