אתגר? ברנדומליזציה. php+mysql

אתגר? ברנדומליזציה. php+mysql

שלום לכולם ושבוע טוב! מה תגידו על זה: יש לי סקריפט שמראה שמות של אנשים המחולקים ל 4 קבוצות. כל שם של מישהו הוא לינק לחלק אחר בסקריפט, שמראה דף עם פרטים על הבן אדם. כל האנשים היו בטבלה אחת במסד נתונים ולכל אחד היה ID ייחודי לו. חלק ספציפי בסקריפט, נתן לי אופציה להשיג בן אדם רנדומלי (בדיקה כמה ID יש, ואז ביצוע פונקציה rand בין הID הכי נמוך, לID הכי גבוה) עקב שדרוג הסקריפט, פיצלתי כל קבוצה לטבלה משלה במסד. איך כדאי לי לבצע את פעולת הרנדומיזציה עכשיו? אני מזכיר, הפעם אין לי טבלה אחת שממנה אני יכול לבצע RAND בין הID הקטן לגדול, אלא יש לי 4 טבלאות ויש בלאגן בין הIDים בכל הטבלאות. תודה רבה לעוזרים!
 

Terminal Frost

New member
אתה יכול להשתמש בUNION

אבל זה לא מומלץ בשום מקרה. אם כן תשתמש בUNION אתה יכול פשוט לשלוף עם ORDER BY RAND() אם לא תשתמש בUNION, פשוט תשלוף RANDים של כולם ותעשה RAND על כל השליפות. זה יבטיח רנדומליות
 

nirtheking

New member
זו בנייה לא נכונה של המסד

ואם פתאום תרצה להוסיף קבוצה חדשה? אז תבנה עוד טבלה וגם עליה תבצע UNION כמו שהוצע כאן קודם ? בגלל שקבוצה זו יישות צריך ליצור לה טבלה משלה שהיא תכיל: ID קבוצה, שם הקבוצה ועוד שדות אופציונליים כמו תיאור קבוצה... בטבלת המשתמשים מוסיפים עמודה ID קבוצה שתשמש כמפתח זר(FK) מתוך טבלת הקבוצות. שליפה לכל קבוצה בנפרד תיעשה ע"י WHERE idGroup=num והבעיה עם הראנדומיזציה תיפתר ע"י חזרה לסקריפט הנוכחי (כדי להציג את שם הקבוצה אפשר להשתמש ב-JOIN)
 

ruthnis

New member
רנדומיזציה

אפשר לחבר את כל הנתונים למערך ואז לעשות רנדומיזציה של המערך או שאתר יכול לעשות רנדומיזציה מאיזו טבלה לבחור ואחר כך רנדומציזציה בתוך הטבלה שנבחרה. בכל מקרה, תמיד עדיף להשאיר נתונים דומים באותה טבלה. בהצלחה !!!
 
למעלה