-
December 12th, 2019, 22:48
#1
بدست آوردن دوستان دوستان
id |
Lastname |
uname |
fid |
1 |
ali |
Ali1 |
0 |
2 |
reza |
Reza1 |
1 |
3 |
ahmadi |
Ahmadi |
2 |
4 |
amir |
Amir1 |
1 |
5 |
naser |
Naser1 |
2 |
6 |
mohammad |
Mohammad1 |
1 |
7 |
maryam |
Maryam1 |
6 |
8 |
zahra |
Zahra1 |
1 |
9 |
venos |
Venos1 |
10 |
10 |
farhad |
Farhad1 |
1 |
11 |
roshanak |
Roshanak1 |
1 |
12 |
erfan |
Erfan1 |
11 |
13 |
omid |
Omid1 |
11 |
14 |
hassan |
Hassan1 |
11 |
15 |
hossein |
Hossein1 |
1 |
با سلام و تشکر از شما دوست عزیز
ببیند ساختار جدول من اینطوری است بصورت مثال
هر کدام از کاربرها fid کاربری هستند
توی فریمورک yii با این دستور تعداد کاربرانی که با کاربر شماره یک در ارتباط هستند به این صورت مشخص می کنیم
کد PHP:
$fid = Yii::app()->db->createCommand("select count(id) from all where fid=1)->queryScalar();
به فرض ما جدولمون all است
با این کد مشخص می شه چند نفر با fid=1 در ارتباط هستند که تعداد آنها 6 عدد است
fid هر کدام از کاربران یک id است
الان من می خوام بدونم چه تعداد id با این شش نفر در ارتباط هستند
یعنی دوستان دوستان کاربر شماره 1
ویرایش توسط Marshall : December 13th, 2019 در ساعت 02:54
-
-
December 12th, 2019 22:48
# ADS
-
December 12th, 2019, 22:51
#2
عضو انجمن
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
Marshall
با سلام
اگه من ده تا دوست داشته باشم
و هر کدام از دوستان من چند تا دوست داشته باشند که عددشون متغیر باشه
من چطوری می تونم با query مشخص کنم دوستان دوستان من چند نفر هستند؟؟؟!
تو دوست داری با دوست من که دوست داره با دوست تو دوست بشه دوست بشی؟
رفیق شفیق من
سلام!
ساختار جدولت چیه؟
یا حداقل یه تصویری از جدول دیتابیس مرتبط باهاش بگذار لا اقل مومن.
یا حداقل بگو سیستم یا افزونه ای که استفاده میکنید چی هست؟
سوالت خیلی گنگه !
-
-
December 12th, 2019, 22:55
#3
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
sam_pontiac
تو دوست داری با دوست من که دوست داره با دوست تو دوست بشه دوست بشی؟
رفیق شفیق من
سلام!
ساختار جدولت چیه؟
یا حداقل یه تصویری از جدول دیتابیس مرتبط باهاش بگذار لا اقل مومن.
یا حداقل بگو سیستم یا افزونه ای که استفاده میکنید چی هست؟
سوالت خیلی گنگه !
با سلام
ببنید مثلا توی دیتابیس چند نفر با من در ارتباط هستند (یعنی دوستان من هستند)
الان اونهایی که با من هم در ارتباط هستند با تعدادی در ارتباط هستند
مثل زیرمجموعه در ریاضی
می خواهم بدونم اونهایی که با دوستان من در ارتباط هستند چند نفر هستند
به صورت
من با قادر و حسین و بهزاد
بهزاد با محمد و علی
حسین با امیر و ناصر
و قادر هم با رضا
می خواهم بدون تعداد اونهایی که با دوستان من در ارتباط هستند چند نفر هستند
-
-
December 12th, 2019, 23:31
#4
عضو انجمن
پاسخ : بدست آوردن دوستان دوستان
ساختار جدولتون چی هست دوست عزیز.
آیا کلیه اطلاعات کاربر در یک جدول هست؟
یا اطلاعات اصلی کاربران در یک جدول و اطلاعات مربوط به ارتباط و لیست دوستان در جدولی دیگر؟
نمونه جدولی بدین.
فرض میگیریم جدول بر اساس اطلاعاتی که شما دادین، اینطور باشه :
id |
username |
friend_id |
1 |
shoma |
,3,4,2 |
2 |
ghader |
1,9 |
3 |
hosein |
1,7,8 |
4 |
behzad |
1,5,6 |
5 |
mohammad |
4 |
6 |
ali |
4 |
7 |
amir |
3 |
8 |
naser |
3 |
9 |
reza |
2 |
هر کدوم از دوستان در ستون friend_id ، بر اساس آیدی کاربریشون معلوم شده.
شما کوئری میدین، که انتخاب کنه از جدول، بعد مقدار friend_id بصورت یک آرایه دریافت میشه.
مثلا :
کد:
SELECT * FROM TABLE ORDER BY id DESC
در یک حلقه while یا for خروجی میگیرید کوئری رو.
مقدار friend_id رو دریافت میکنید، مثلا :
کد:
$friend_id = $result['friend_id];
اکسپلود میکنید ( جداسازی آیدیها ) ، مثلا :
کد:
$friends_id = explode(",",$friend_id);
foreach($friends_id as $fid){
// code baraye arzyabie inke un user dar ertebat ba shoma hast ya na, IF (agar bud) neshun bede, else, nothing !
}
میاید یا اون آرایه رو explode میکنید، یا در یک حلقه قرار میدید.
میگید که هر جا id دوستان من، در لیست دوستان کاربران دیگه بود، اسمشون یا آیدیشون رو نمایش بده.
همین.
اینا همه فرضی بود و قطعا عینا این کدها کار نمیکنه و قصد این بود که یه راه ساده و معمولیش رو بهتون بگم.
چون تا وقتی که نبینیم ساختار دیتابیس و جدول مرتبط با اون چطور هست، نمیشه دقیقش رو گفت.
موفق باشید.
-
تعداد تشکر ها از sam_pontiac به دلیل پست مفید
-
December 12th, 2019, 23:44
#5
پاسخ : بدست آوردن دوستان دوستان
id |
Lastname |
uname |
fid |
1 |
ali |
Ali1 |
0 |
2 |
reza |
Reza1 |
1 |
3 |
ahmadi |
Ahmadi |
2 |
4 |
amir |
Amir1 |
1 |
5 |
naser |
Naser1 |
2 |
6 |
mohammad |
Mohammad1 |
1 |
7 |
maryam |
Maryam1 |
6 |
8 |
zahra |
Zahra1 |
1 |
9 |
venos |
Venos1 |
10 |
10 |
farhad |
Farhad1 |
1 |
11 |
roshanak |
Roshanak1 |
1 |
12 |
erfan |
Erfan1 |
11 |
13 |
omid |
Omid1 |
11 |
14 |
hassan |
Hassan1 |
11 |
15 |
hossein |
Hossein1 |
1 |
با سلام و تشکر از شما دوست عزیز
ببیند ساختار جدول من اینطوری است بصورت مثال
هر کدام از کاربرها fid کاربری هستند
توی فریمورک yii با این دستور تعداد کاربرانی که با کاربر شماره یک در ارتباط هستند به این صورت مشخص می کنیم
کد PHP:
$fid = Yii::app()->db->createCommand("select count(id) from all where fid=1)->queryScalar();
به فرض ما جدولمون all است
با این کد مشخص می شه چند نفر با fid=1 در ارتباط هستند که تعداد آنها 6 عدد است
fid هر کدام از کاربران یک id است
الان من می خوام بدونم چه تعداد id با این شش نفر در ارتباط هستند
یعنی دوستان دوستان کاربر شماره 1
ویرایش توسط Marshall : December 12th, 2019 در ساعت 23:49
-
-
December 13th, 2019, 00:04
#6
عضو انجمن
پاسخ : بدست آوردن دوستان دوستان
صحیح.
count شمارش میکنه.
شما مجموع رو اگر میخواید، با SUM امتحان کنید.
آپدیت :
یا :
کد:
$query = (new \yii\db\Query())->from('all');
$sum = $query->where(['fid' => '1']);
$sum = $query->sum('id');
echo $sum;
این sum جمع میبنده در کل.
اطلاعات بیشتر هم الان پیدا کردم برای این نحوه کوئری ( البته yii 2 به بالا ) :
https://www.yiiframework.com/doc/guide/2.0/en/db-query-builder
مجدد ویرایش و آپدیت ( چند وقتی هست با yii کار نکردم ).
میتونید از دیتا اکسس ( یا همون حالت پیش فرض کوئری yii ) هم استفاده کنید :
مثلا :
کد:
$command = Yii::$app->db->createCommand("SELECT sum(id) FROM all WHERE fid='1'");
$sum = $command->queryScalar();
echo $sum;
در آخر، حالا چرا yii framework ؟؟
ویرایش توسط sam_pontiac : December 13th, 2019 در ساعت 00:09
دلیل: آپدیت
-
تعداد تشکر ها از sam_pontiac به دلیل پست مفید
-
December 13th, 2019, 00:12
#7
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
sam_pontiac
صحیح.
count شمارش میکنه.
شما مجموع رو اگر میخواید، با SUM امتحان کنید.
آپدیت :
یا :
کد:
$query = (new \yii\db\Query())->from('all');
$sum = $query->where(['fid' => '1']);
$sum = $query->sum('id');
echo $sum;
این sum جمع میبنده در کل.
اطلاعات بیشتر هم الان پیدا کردم برای این نحوه کوئری ( البته yii 2 به بالا ) :
https://www.yiiframework.com/doc/guide/2.0/en/db-query-builder
مجدد ویرایش و آپدیت ( چند وقتی هست با yii کار نکردم ).
میتونید از دیتا اکسس ( یا همون حالت پیش فرض کوئری yii ) هم استفاده کنید :
مثلا :
کد:
$command = Yii::$app->db->createCommand("SELECT sum(id) FROM all WHERE fid='1'");
$sum = $command->queryScalar();
echo $sum;
در آخر، حالا چرا yii framework ؟؟

خیلی ممنون از جوابتون
sum
fid ها رو با هم جمع می کنه من تعدادشون رو می خوام
یعنی تعداد کاربرانی که با دوستان کاربر شماره یک در ارتباط هستند!
count اینها رو می خوام که بدونم تعداد اینها چند نفر است
sum تموم fid ها رو با هم جمع می کنه مثل عمل جمع در ماشین حساب
من فقط تعدادشون رو میخوام :-)
در آخر، حالا چرا yii framework ؟؟
چون تازه با فریمورک yii آشنا شدم و خیلی ازش خوشم اومده
ویرایش توسط Marshall : December 13th, 2019 در ساعت 00:16
-
-
December 13th, 2019, 00:17
#8
عضو انجمن
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
Marshall
خیلی ممنون از جوابتون
sum
fid ها رو با هم جمع می کنه من تعدادشون رو می خوام
یعنی تعداد کاربرانی که با دوستان کاربر شماره یک در ارتباط هستند!
count اینها رو می خوام که بدونم تعداد اینها چند نفر است
چون تازه با فریمورک yii آشنا شدم و خیلی ازش خوشم اومده
خواهش میکنم.
خب از count استفاده کنید، خودتون هم اول اشاره کردید.
کوئریش همین هست :
کد:
$query = (new \yii\db\Query())->from('all');
$sum = $query->where(['fid' => '1']);
$count = $query->count('id');
echo $count;
یا :
کد:
$command = Yii::$app->db->createCommand("SELECT count(id) FROM all WHERE fid='1'");
$count = $command->queryScalar();
echo $count;
دقیقا همون کوئریهای بالا، که به جای SUM من COUNT رو گذاشتم.
یعنی میاد تعداد کاربرانی که در fid با هم مشترک هستند رو بر اساس id شمارش میکنه و نتیجه رو میده.
-
تعداد تشکر ها از sam_pontiac به دلیل پست مفید
-
December 13th, 2019, 00:34
#9
پاسخ : بدست آوردن دوستان دوستان

نوشته اصلی توسط
sam_pontiac
خواهش میکنم.
خب از count استفاده کنید، خودتون هم اول اشاره کردید.
کوئریش همین هست :
کد:
$query = (new \yii\db\Query())->from('all');
$sum = $query->where(['fid' => '1']);
$count = $query->count('id');
echo $count;
یا :
کد:
$command = Yii::$app->db->createCommand("SELECT count(id) FROM all WHERE fid='1'");
$count = $command->queryScalar();
echo $count;
دقیقا همون کوئریهای بالا، که به جای SUM من COUNT رو گذاشتم.
یعنی میاد تعداد کاربرانی که در fid با هم مشترک هستند رو بر اساس id شمارش میکنه و نتیجه رو میده.
ببخشید شما رو هم زحمت دادم :-(
نه این نیست این همون کوئری خودمه که تعداد اونهایی که با کاربر شماره 1 در ارتباط هستند رو میده که جوابش میشه 6
من دنبال اون افرادی هستم که با این شش نفر در ارتباط هستند یعنی تعداد کل آیدی های که با دوستان کاربر شماره یک ارتباط هستند
مثل زیر مجموعه در ریاضی است
کاربر شماره یک 6 زیر مجموعه دارد
هر کدام از 6 کاربر زیر مجموعه شماره یک هم تعدادی زیر مجموعه دارند
کاربر شماره 1 میشه سرستون مجموعه
کاربرانی که با خودش ارتباط هستند میشه مجموعه شماره 1 که شش نفر هستند
مجموعه شماره 2 کاربرانی است که با اون شش نفر در ارتباط هستند
من تعداد این ها رو میخوام :-(
-
-
December 13th, 2019, 03:08
#10
عضو انجمن
پاسخ : بدست آوردن دوستان دوستان
درود ببینید
اگر شما اینو تازه دارید طراحی میکنید این ساختار اشتباست ( یعنی نیاز به چندین کوئری هست بستگی به نتیجه شاید صدها کوئری)
ولی اگر طراحی شده باز در یکی از مثالهاتون ذکر کنید اگر یکی بیشتر از دو دوست داشت به چه شکل در فیلد فرند آی دی ذخیره میکنید
-