עבור לתוכן

למרבה הבושה אני לא מצליח ליצור שאילתת עדכו�

Featured Replies

פורסם

אני צריך לעשות 2 דברים:

1)לאפס כל [grade] בטבלת grades שקטן מ [min grade] בטבלת subjects ע"פ קישור ה [subject] שמופיע ב grades. אני לא מצליח להשתמש בקישור הזה, כל מה שהצלחתי היה לגרום לכך שכל מה שקטן מה [min grade] הכי קטן יתאפס.

2)לעדכן את [new grade] בטבלת grades ע"פ מכפלה שלו ב [multiply] מטבלת subjects חלקי [hours] מטבלת courses.

אני לא מצליח לעשות את זה כמו שצריך (במיוחד לא ע"פ נתונים ע"פ קשרי גומלין כמו ב1). :s07:

זה דרש ממני כוחות נפשיים רבים להשפיל את עצמי ולכתוב לעזרה. תודה רבה

[attachment deleted by admin]

פורסם
  • מחבר

קריאה נואשת לעזרה כלשהי? אין פה אף אחד שיודע איך לעשות פעולה בסיסית כ"כ? :jump:

פורסם

נסה את זה (עבד לי יופי)

update grades set grade = 0

where grade < (select min_grade from subjects where grades.subject = subjects.subject)

כמובן שזה יעבוד אך ורק אם אין ערכים כפולים של subject בטבלת subjects[br]פורסם בתאריך: 18.06.2009 בשעה 18:26:13


תשובה לשאלה שניה

update grades set new_grade =

(select grade * multiply / hours from subjects,courses where courses.subject = subjects.subject

and grades.subject = subjects.subject and grades.course = courses.course)

פורסם
  • מחבר

לא עובד. בראשון הוא לא מזהה את min grade כערך מטבלה ומבקש להזין מספר ובשני הוא נותן ארור של "type mismatch in expression". אולי הייתי מנסה לפתור את הבעיה לבד אבל המוח כבר נזל לי מהאוזניים היום בצהריים כשניסיתי לפתור את העניין.

help?

תודה.

פורסם

איזה מסד נתונים זה???

השאילתות עבדו לי על Oracle וגם SQL server

השאילתה הראשונה כ"כ פשוטה שאין מצב שהיא לא עובדת וזה גם לפי ansi SQL

פורסם
  • מחבר

אקסס

פורסם

טוב, יש לי אקסס 2007 אני מקווה שזה נכון לגבי כל הגרסאות

השאילתא הראשונה היא זו

UPDATE grades INNER JOIN subjects ON subjects.num=grades.subject SET grades.grade = 0

WHERE [grades].[grade]<[subjects].[min_grade];

[br]פורסם בתאריך: 21.06.2009 בשעה 11:40:25


%7Boption%7D

הממ הייתי מראה לך איך השאילתא נראית בdesign view אבל משום מה לא מצליח לי העלות תמונה...

בכל אופן זה הולך ככה

בחרתי שאילתא מסוג update בשאילתא שמתי את טבלאות grades ו subjects והקישור הופיע באופן אוטומטי כצפוי

בשדה Field שמתי את grade מתוך טבלת grades

בשדה update to כתבתי 0

בשדה criteria כתבתי

<[subjects].[min_grade]

[br]פורסם בתאריך: 21.06.2009 בשעה 11:43:09


השאילתא השניה נראית משהו כזה

UPDATE subjects INNER JOIN (courses INNER JOIN grades ON courses.course = grades.course) ON (subjects.num = grades.subject) AND (subjects.num = courses.subject) SET [grades].[new_grade] =

[grades].[new_grade] * [subjects].[mutiply] / [courses].[hours];

פורסם
  • מחבר

תודה רבה :-*! אני אבדוק את זה אח"כ ונראה.

נורא מרגיזה אותי העובדה שאני חייב לעבוד עם אקסס בשביל הפרויקט לבגרות. יש פלטפורמות כ"כ יותר טובות...

עריכה: הראשונה עובד מעולה אחרי כמה התאמות שכנראה נבעו מכך שלי יש גרסת 2003.

בשנייה (אחרי התאמות גרסא בסיסיות) מוצגת לי הודעה כזו:

Type mismatch in JOIN expression.

מה זה אומר ואיך אני יכול לתקן את זה?

זה Error 3615 אם זה משנה.

תודה רבה![br]פורסם בתאריך: 21.06.2009 בשעה 14:43:00


עדכון- עכשיו משום מה הוא לא קולט את multiply. יש מושג למה?

זה הקוד:

UPDATE subjects INNER JOIN (courses INNER JOIN grades ON courses.[course number] = grades.course) ON (subjects.num = grades.subject) AND (subjects.num = courses.subject) SET grades.[new grade] = grades.[new grade]*subjects.[mutiply]/courses.[hours];

פורסם

כנראה שלא כל שדות הjoin שוים בסוג שלהם

למשל אני חושב שauto number לא זהה ל number

לגבי שדה multiply שמתי לב שדיאגרמת יחסים (התמונה שצירפת) קראת לשדה multiplay אז תבדוק את האיות טוב טוב

פורסם
  • מחבר

הבעיה שציינתי בנוגע לשגיאה נפתרה. הוא לא התייחס לשדה הנכון.

הבעיה עכשיו היא שהוא לא קולט את multiply מהטבלה ומבקש הזנת מספר. האיות נכון, הכל מתאים.

יש רעיון?

הבעיה נפתרה. הבעיה הנוכחית היא שהוא פשוט לא מעדכן את new grades. לפי החשד שלי הוא מנסה לעדכן את subjects למרות שאין שם מה לעדכן...

(הוא מנסה לעדכן 3 רשומות- בsubjects יש 3 ולעומת זאת ב grades יש 8. כמו כן, שום רשומה לא מתעדכנת ב grades)

הלוואי שאני אגמור את החרא הזה מחר...[br]פורסם בתאריך: 21.06.2009 בשעה 23:26:32


כל הבעיות נפתרו! :yelclap:

עכשיו יש בעיות חדשות... אבל איתן אני יכול להתמודד.

פורסם

סתם בשביל הסקרנות, איך עשית את השאילתא השניה

פורסם
  • מחבר
UPDATE subjects INNER JOIN (courses INNER JOIN grades ON courses.[course number] = grades.course)
ON (subjects.num = grades.subject) AND (subjects.num = courses.subject)
SET grades.[new grade] =grades.grade*subjects.multipy/courses.hours;

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים