שאלה חשובה

doutsider

New member
שאלה חשובה

יש לי טבלה בשם tbl1 שדות: id,num אני מנסה ליצור ע"י SQL שאילתת מחיקה אשר כל פעם שאפעיל אותה תמחק השורה האחרונה בלבד מהטבלה, אך הדבר לא קורה מישהו יודע כיצד לבצע את הדבר?
 

shanor

New member
אז ככה:

לא ציינת איזה שדה מבין השניים הוא ייחודי או אינדקס... בקיצור מה שאתה צריך לעשות הוא משהו כזה (בהתאם לווריאציה של ה- SQL שלך - אני עובד על MySQL ). נניח ש- NUM הוא השדה של האינדקס שלך שפשוט סופר את הרשומות שלך מ-1 ועד כמה רשומות שיש לך. תשאל מה ה- NUM המקסימלי הקיים: select max(NUM) from tbl1 את הערך שמתקבל, תשמור במשתנה כל שהוא ובשאילתה נופסת תעשה: delete from tbl1 where NUM=SavedVar יש עוד הרבה וריאציות לעשות את זה אבל זה לדעתי הברור ביותר, והפשוט ביותר להבנה. בהצלחה שנאור.
 

doutsider

New member
הנה

עשיתי שאילתה שמחזירה לי את הערך מכס: SELECT Max(tbl1.id) AS Maxid FROM tbl1; קראתי לה abvc עכשיו עשיתי עוד שאילתה:
DELETE tbl1.id, tbl1.num FROM tbl1 LEFT JOIN abvc ON abvc.Maxid=tbl1.id;​
הוא מציג לי את השדות הנכונים למחיקה, אבל רושם שאני צריך לציין את שם הטבלה... אתה יודע אולי מה הבעיה?
 

shanor

New member
אז ככה:

הניסוח של הפקודה שלך לא נכון. פקודת המחיקה הולכת: delete from TABLENAME where CONDITION תרשה לי להסביר את זה באנגלית. well the thing is that all u need to put in this statment is the name of the table and some condition(s) that will pin-point the exact place or rows u need to delete. that is up to this point and now a small example נניח טבלה (דיי דומה לשלך, אני משתדל לשמור על המבנה שלך כדי להקל על ההבנה כאן) שיש בה טור אחד של שם משתמש, טור שני של תעודת זהות וטור שלישי של מספר סידורי וסידרתי שנקרא אינדקס (כמובן שבטבלה הטורים יהיה בדיוק הפוכים הטור הראשון הוא האינדקס, השניה הוא ת.ז. והשלישי הוא שם המשתמש). כדי למחוק שורה כלשהיא מהטבלה, צריך להגדיר מה רוצים למחוק delete from tbl1 where... עכשיו אתה צריך קצת לשנות את הפורמט של השאילתה שלך כי בDELETE אי אפשר לעשות JOIN... הנה המבנה האפשרי מתוך ה-MANUAL של Mysql. DELETE [LOW_PRIORITY] FROM tbl_name [WHERE where_definition] [LIMIT rows] תהנה שנאור.
 
למעלה