הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 13-01-09, 00:05   # 1
Megnum
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: May 2007
מיקום: אשד
הודעות: 1,308

Megnum לא מחובר  

שאלה בSQL

שלום, נגיד יש לי את השאילתה הזאת:
PHP קוד:
$sql="select * from table where `id`=1 order by id"
איך אוכל לשלב את הפקודה delete
בשאילתה וכמובן לקבוע את הid שימחק.


כמובן שאשמח לעשות זאת בלי לעשות תשאילתה מחדש
תודה רבה!
  Reply With Quote
ישן 13-01-09, 07:19   # 2
null
кто ты?
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 2,177

null לא מחובר  

עד כמה שידוע לי, אין אפשרות לשלב אין SELECT וDELETE,
שכן ל DELETE יש הגדרת WHERE משל עצמו.

SELECT נועד על מנת לקבל נתונים לפי קריטריון מסויים
ו DELETE נועד על מנת למחוק רשומות לפי קריטריון מסויים

אני לא מבין איפה קיימת הבעיתיות בלשלוח עוד שאילתה למסד למחיקה...?
  Reply With Quote
ישן 13-01-09, 09:26   # 3
vadimg88
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
גיל: 36
הודעות: 710

vadimg88 לא מחובר  

זה נקרא sub queries
לדוגמא:

קוד:
DELETE FROM <tablename> WHERE id = (SELECT id from <tablename> WHERE id ='1')
  Reply With Quote
ישן 13-01-09, 09:40   # 4
En-Solutions
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Dec 2005
מיקום: קריות
הודעות: 1,331

En-Solutions לא מחובר  

הDELETE חייב לבוא לפני הSELECT אם אתה רוצה לעשות תת שאילתה כמו במקרה של ודים.
בכל מקרה התת שאילתה כאן מיותרת אם אתה משתמש באותה טבלא.
Delete from "TABLE" Where ID=IDNUMBER
ימחק את כל השורה של המספר שציינת בID.

בהצלחה
__________________
שעוני דיפ בלו - שעוני צלילה יוקרתיים!
http://www.deepbluewatches.co.il
ניתן להשיג בכרונו 7\24 והמשווקים המורשים
  Reply With Quote
ישן 13-01-09, 10:34   # 5
A.M.F
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 33
הודעות: 1,154

A.M.F לא מחובר  

למה זה טוב שימוש בשאילתות כאלה?
  Reply With Quote
ישן 13-01-09, 10:52   # 6
vadimg88
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
גיל: 36
הודעות: 710

vadimg88 לא מחובר  

אכן, אם ה ID ידוע כבר לא צריך לבצע שאילתה כדי לשלוף את ה ID אבל אם לדוגמא יש לך את השם של המשתמש ואתה רוצה למחוק את הנתונים שלו מטבלה אחרת (או מאותה טבלה לפי ID) אז אתה מבצע שאילתת SELECT בתוך ה DELETE כפי שמוצג מעלה.

למה זה טוב? דבר ראשון זה מונע ממך לבצע כמה שאילתות כל פעם אחת אחרת. אפשר היה לעשות שאילתה של SELECT שמחזירה את ה ID ואז עם ה ערך של ה ID לבצע שאילתת DELETE נוספת. זה יגרום לביצוע של 2 שאילתות (שזה מיותר מבחינת אופטימיזציה) לעומת ביצוע שאילתה אחת שמבצעת שאילתה נוספת פנימית. בדרך כלל MYSQL מריץ את השאילתה הזאת בתור שאילתה אחת ולא מחלק אותה לכמה שאליתות, (בניגוד ל joins ו ו unions ).
עוד דבר שלפעמים נותן יתרון זה ש sub queries (תתי שאילתות) כתובות בצורה קריאה יותר מאשר ה JOINS ו UNIONS למיניהם.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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