سلام
من یه جدول دارم که ازش آی دی کاربر رو میخونم و در جدول دیگه ازش استفاده می کنم به اینصورت
;"SELECT `name` FROM `karbaran` where `Idkarbar` IN (SELECT `idkarbar` FROM `ban` order by `id` desc ) Limit $start $perpage"
الان همه چیز درست کار می کنه اما دستور order درست کار نمیکنه چون جه صعودی میدم چه نزولی چه جور دیگه، کار نمی کنه
در واقع آنچه که من بهش رسیدم اینه که چون آی دی کاربران در جدول "کاربران" یونیک است . در جدول "بن" ممکنه یک آی دی دو یا چند بار آمده باشه یعنی من میخوام اگر آی دی شماره 10 برای نام "علی" است و این آی دی در جدول "بن" سه بار قرار دارد خروجی این دستور نیز سه بار نام علی باشد اما یک بار نام علی را بیرون می دهد و سورت من بهم میخورد چکار کنم که اگر خروجی داخل پرانتز سه بار یک آی دی تکراری بیرون داد خروجی نهایی هم سه بار نام تکراری را بیرون بدهد نه یک بار؟
تشکر
rezaonline.net
September 29th, 2014, 18:40
شما name رو سلکت کردید پس چطوری سورت کنه ؟
همچنین دستور سورت رو داخل ساب کوئری نوشتید اصلاحیه کوئری شما
SELECT `name` , Idkarbar FROM `karbaran` where `Idkarbar` IN (SELECT `idkarbar` FROM `ban` ) order by Idkarbar Limit $start $perpage
البته شدیدا پیشنهاد میکنم از join استفاده کنید .
select karbaran.name as _name , karbaran.Idkarbar as _Idkarbar from karbaran rightjoin ban on ban.idkarbar=_Idkarbar order by _Idkarbar desc Limit $start, $perpage
m like mother
September 30th, 2014, 16:42
در واقع می خواستم جدول "بن" رو بصورت سورت شده بر اساس آی دی بدم به جدول کاربران برای همین سورت رو داخل پرانتز گذاشتم.
جدول بن حداکثر تا 10 ردیف بیشتر نیست اما جدول کاربران 2000 ردیف داره ... من میخوام کاربرانی رو از جدول کاربران بخونم که آی دی اونها در جدول بن است الان با این دستور به جواب میرسم دیگه؟ میرم تست می کنم ببین جواب می گیرم
تشکر
Global90
September 30th, 2014, 17:21
در واقع می خواستم جدول "بن" رو بصورت سورت شده بر اساس آی دی بدم به جدول کاربران برای همین سورت رو داخل پرانتز گذاشتم.
جدول بن حداکثر تا 10 ردیف بیشتر نیست اما جدول کاربران 2000 ردیف داره ... من میخوام کاربرانی رو از جدول کاربران بخونم که آی دی اونها در جدول بن است الان با این دستور به جواب میرسم دیگه؟ میرم تست می کنم ببین جواب می گیرم
تشکر
دوست عزیز همونطور که rezaonline.net فرمودن شما بهتره از JOIN استفاده کنی.
برداشتی که من صحبت های شما کردم شما میخوای مثلا تو یه صفحه ای ، مثلا صفحه افراد بن شده اسم و مشخصات اون فرد رو نمایش بدی و چون در حال حاظر توی اون تیبل فقط ID رو داری به مشکل برخوردی. این کار به راحتی با JOIN شدنی هست دوتا جدول User و Ban شدنی هست و سرعت عمل خیلی خوبی هم داره البته سعی کنین تعداد JOIN هاتون بیشتر از دوتا جدول نشه. از کد دوم rezaonline.net استفاده کنین جواب میگیرین در صورتی که به مشکل برخوردین اسم دوتا جدول و فیلد هاش رو دقیقا قرار بدین راهنمایی میکنم.
rezaonline.net
September 30th, 2014, 18:13
البته اگر ساختار دیتابیس رو به شکل دیگه ای میچیدید بهتر بود .
همون جدول کاربران یک فیلد میساختید به اسم is_ban و با مقدار 0 و 1 مقدار دهی میکردید .
m like mother
October 9th, 2014, 18:55
با join هر کاری کردم به نتیجه نرسیدم شاید جایی خطا دارم حالا کلا دارم تغییراتی توی کدها میدم که اصلا نیازی به اینکار نباشه ... اگه به مشکل خوردم خبر می دم
تشکر