![]() |
בשאילתת UPDATE יד דרך לדעת את מספר העידכון?
לדוגמא, יש לי 5 משתמשים, ויש תא בשם number,
אני רוצה בשאילתה אחת לעדכן בכולם מספרים שונים! לדוגמא update users set number=something++ אם זה גם ככה עובר על כל המשתמשים, אז יש איזו דרך לעדכן גם מספר שונה אצל כל אחד לפי הסדר שהוא מעדכן אותו? מקווה שהבנתם |
UPDATE `tbl` SET `counter`=`counter`+1;
|
אני לא רוצה להגדיל את התא ב1, אני רוצה להכניס לשם מספר לפי סדר העידכון של השאילתה
|
אתה רוצה לעדכן את כל המשתמשים?
או שאתה רוצה ספציפי? או שאתה רוצה טווח? תפרט, לא ממש הבנתי.. אם אתה רוצה את כל המשתמשים אתה יכול לעשות update לכולם אם אתה רוצה ספציפי אתה יכול לעשות update ספציפי אם אתה רוצה טווח אתה יכול לעשות לולאה שבתוכה יהיה update למשתמש ספציפי |
למה מראש לא לתת להם AUTO INCREMENT?
אפשרות אחרת היא שימוש בPHP. אפשרות נוספת היא במידה ויש auto increment מסויים לעשות פעולה שעושה id+1. |
ציטוט:
בקיצר, לא ניראלי שבאמת מישהו מאיתנו הבין בדיוק מה הוא רצה.. |
אם הבנתי נכון אתה מעוניין לעדכן מונה מסויים לכל אחד מהמשתמשים בטבלה בתוך שדה NUMBER כך שבין משתמש למשתמש יהיה הפרש של אחד.
הדרך היחידה לעשות את זה באמצעות שאילתא היא לשלוף את כל המשתמשים מהטבלה לתוך מערך, אח"כ לרוץ על המערך ולכל אחד מהמשתמשים לעדכן באמצעות שאילתא כזאת: קוד:
Update Users Set Number={i} Where UserId={UserId} {i} זהו המונה שכל פעם גדל ב-1 (יכול להיות מונה הלולאה ויכול להיות משהו אחר - לפי הצורך {UserId} - זהו מספר המשתמש שלפני רגע שלפת מהטבלה |
לא הבנתם, לא בהכרח אני רוצה לרוץ על כל המשתמשים, ואם אני רוצה רק כאלה בגיל מסויים, אז שייעדכן רק 26 מתוך 100 משתמשים ובכל אחד מהם יהיה תא שגדול מהאחר ב1 בלבד לפי סדר העידכון, וכל זה בלי לולאה של php אלא בשאילתה אחת בלבד. (כי לולאה מאריכה את התהליך)
|
בלי לולאה בצד שרת אתה לא ממש יכול.
הפתרון השני יהיה פרוצדורה שעושה לולאה ב-DB. בכל מקרה, באמצעות שאילתא אחת לא תוכל. ואם אתה לא רוצה לרוץ על כל המשתמשים, כמובן בשאילתא הראשונה שממלאת את המערך שלך, אתה יכול להגדיר את מי אתה רוצה בדיוק.. |
כל הזמנים הם GMT +2. הזמן כעת הוא 08:14. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ