
نوشته اصلی توسط
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 به بالا و کمک گرفتن از تایپ جیسون
موفق باشید