הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שאילתת Mysql לא תקינה (https://hosts.co.il/forums/showthread.php?t=94168)

Kernel 19-12-11 11:00

שאילתת Mysql לא תקינה
 
יש שאילתה שמאפשרת למשתמש למחוק את הפרופיל שלו מהמערכת,
אני מעוניין למחוק את השורה בכל טבלה שה-UID הוא 200.
הטבלאות במסד הן: signup, users_blocks, users_flags, users_online, users_prefs

ככה זה כתוב היום (וזה לא עובד) שאילתת מחיקה ליוזר מס' 20:
קוד:


DELETE FROM signup, users_blocks, users_flags, users_online, users_prefs WHERE UID = 200;

עזרתכם בנושא,
תודה
אבי

Sagi 19-12-11 11:38

מה השגיאה?

Kernel 19-12-11 11:44

קוד:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE UID = 200' at line 1

Sagi 19-12-11 12:41

לדעתי אתה אמור להגדיר בכל טבלה אידי

PHP קוד:

DELETE FROM signupusers_blocksusers_flagsusers_onlineusers_prefs WHERE signup.UID 200 and users_blocks.UID 200 and users_flags.UID 200 and users_online.UID 200 and users_prefs 200


Kernel 19-12-11 14:21

ניסיתי כל מיני וריאציות ולא הצלחתי,
לגבי השאילתה שלך:
קוד:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE signup.UID = 200 and users_blocks.UID = 200 and users_flags.UID = 200 a' at line 1
אבי

satan 19-12-11 15:18

לפי מיטב זכרוני זה סתם מסובך למחוק בשיטה שאתה רוצה..

עדיף לך לדחוס שאילתות במכה אחת, זה שונה מלשלוח אותן שוב ושוב.
ז"א

DELETE FROM signup WHERE UID = 200;DELETE FROM signup WHERE UID = 200;DELETE FROM table3 WHERE UID = 200;

* חשוב שתסיים את השאילתא ב ; ותתחיל אחת חדשה

SniR-S 19-12-11 22:00

בכל טבלה קיים השדה UID ? אם כן, בכל טבלה הוא זהה ל ID של ה USER ?

אני שואל כי זה הכי הגיוני, ומה ששגיא כתב פה אמור לעבוד.

בניה 20-12-11 01:32

כשמדובר בכמה טבלאות אתה צריך להוסיף בין ה DELETE ל FROM את שמות הטבלאות/שדות כמו בSELECT
DELETE `signup`.*, `asd`.* FROM `signup`, `asd`
WHERE `UID` = 200

http://dev.mysql.com/doc/refman/5.0/en/delete.html

blackghost 25-12-11 22:25

למה שתרצה אגב למחוק נתון מהDATABASE?
אני פשוט עושה לו UPDATE לשדה STATUS 0.
אין למה למחוק שום נתון עדיף לשמור .

daNN 26-12-11 22:12

ציטוט:

נכתב במקור על ידי blackghost (פרסם 829623)
למה שתרצה אגב למחוק נתון מהDATABASE?
אני פשוט עושה לו UPDATE לשדה STATUS 0.
אין למה למחוק שום נתון עדיף לשמור .

מה אתה מדבר שטויות...
כאשר אין שימוש בנתון נחוץ למחוק אותו כמובן
מה הקטע בלשמור "זבל" על המסד נתונים?
מבזבז זיכרון ומעלה את זמן הריצה של השאילתות על הטבלה בצורה ניכרת.


כל הזמנים הם GMT +2. הזמן כעת הוא 08:58.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ