PDA

View Full Version : حرفه ای: یک کوری در mysql



rapidpich
دوشنبه 04 مرداد 1389, 13:53 عصر
سلام

من تو سایتم 2 تا table دارم



users:
id: integer

files:
user_id: integer
url: string
transfered: boolean

کاری که میخام بکنم اینه:

وقتی کوری انجام میشه فایل هارو به ترتیب یکی برای هر کاربر بیاره، یعنی مثلا کاربر 1 10 تا فایل داره، کاربر 2 ، 4 تا و کاربر 3 یک فایل
من میخام اول یک فایل از کاربر 1 بیاد
یک فایل از کاربر 2
یک فایل از کاربر 3
یک فایل از کاربر 1
یک فایل از کاربر 2
یک فایل از کاربر 1 (دیگه کاربر 3 فایلی نداره).
2
1
2
و در نهایت وقتی فایلهای کاربر 2 هم تموم شد کاربر 1 بیاد.
1
1
1

راهی هست به نظرتون که با یک کوری اینکار انجام بشه؟ (یعنی هر بار که کوری اجرا میشه یک فایل رو برگردونه نه اینکه همه رو بده) اونم به صورت هوشمند! :متفکر:

mohmadd
دوشنبه 04 مرداد 1389, 22:50 عصر
سلام مهندس
فکر نکنم با mysql بشه تمام این موارد رو با هم انجام داد!! منظورم اینه که دسته بندی اطلاعات رو باید با php انجام بدیم.
یه چیزی تو مایه های زیر میشه : query

select id,url from users join files on users.id = files.user_id
بعدش این اطلاعات رو باید با php دسته بندی کنی.
به امیر حسین هم پ.خ بده.

rapidpich
سه شنبه 05 مرداد 1389, 08:36 صبح
آره، خودمم دارم فکر میکنم دارم زور میگم!

bestirani2
پنج شنبه 07 مرداد 1389, 13:14 عصر
اگه یک


user_file_id: integerاضافه کنی مشکلت حل میشه

حالا این فیلد رو چطور پر کنی

وقتی یک کاربر یک فایل رو اضافه میکنه یکی بر مقدار user_file_id ایش اضافه میشه

مثلاً فرض کن

تو یوزر ها یک آیدی 1 داریم و یک 2 و یک 3

تو فایلها هم این رو داریم
فایل کاربر 1 با user_file_id یک
فایل کاربر 3 با user_file_id یک
فایل کاربر 1 با user_file_id دو
فایل کاربر 2 با user_file_id یک
فایل کاربر 2 با user_file_id دو
فایل کاربر 1 با user_file_id سه

حالا هنگام مرتب کردن فایل بیای بگو


order by user_file_id, user_id asc;در نتیجه با اضافه کرد یک فیلد جدید مشکلت حل میشه

bestirani2
شنبه 09 مرداد 1389, 20:26 عصر
اگر نمیخوای یک فیلد جدید اضافه کنی یک کار دیگه هم میتونی بکینی

آی دی که تولید میکنی یک عدد منحصر به فرد باشه با تعداد ارقام مشخص
مثلاً 7 رقمی
یعنی از 1000000 شروع بشه و سپس مقداری که قرار بود به user_file_id اضافه کنی را بعد از رقم هفتم اضافه کنی مثلاً 10000001 - 10000002 و الا آخر
و ارقام بعد از 7 رقم را با توابع مربوط به اس کیو ال جدا کنی و داستان بالا