עזרה בחישוב תשלומים בשאילתה באקסס
-
@איש-ימיני אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
אני מעוניין לעשות שאילתה שתציג לי את כמות התשלומים שהלקוח שילם (לפי כמות הפעמים שמופיע בטבלת התשלומים) , ואת הסכום שיוצא שהלקוח שילם מכל התשלומים ביחד.
בהנחה שעל כל תשלום יש איזה מזהה של הלקוח,
אז תעשה שאילתת סיכום
המזהה של הלקוח = קיבוץ לפי
ואת הלקוח(לא משנה איזה שדה). ותעשה Count
ואת הסכום ותעשה Sum.
תשמור את השאילתא,
ואז תעשה שאילתה משניהם (הלקוחות והשאילתה החדשה). -
-
@איש-ימיני
לא,
אבל נראה לי שכך יותר טוב לעשות.
מצו' קובץ בשאילתה אחת.
דוגמא.accdb -
@avi-rz
יש לי עוד שאלה.
במקור יש לי 2 טבלאות של תשלומים.
ניסיתי להוסיף שאילתה שיצרף את הכל, ויציג את כל הלקוחות, ואצל כל לקוח את התשלומים של שני הטבלאות.
אך בפועל מוצג בשאילתה רק הלקוחות שמופיעים בשני טבלאות התשלומים, לקוח שמופיע רק בטבלת תשלומים אחת או שלא מופיע כלל בטבלאות התשלומים אינו מוצג בשאילתה.
השאלה איך אני עושה שיופיעו כל הלקוחות בשאילתה, ואצל כל אחד יוצג התשלומים שלו, אם יש לו תשלומים.
תודה רבה
דוגמא 2.accdb -
@איש-ימיני אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
השאלה איך אני עושה שיופיעו כל הלקוחות בשאילתה, ואצל כל אחד יוצג התשלומים שלו, אם יש לו תשלומים.
זה SQL בסיסי:
אתה צריך להשתמש בשאילתא עם Outer-Join (זה צירוף לכיוון אחד, ונקרא גם באקסס Left-Join או Right-Join). הצירוף הזה מציג את כל הרשומות מטבלה אחת ורק את הרשומות המתאימות מטבלה אחרת.
בעורך השאילתא של אקסס תקליק על הקו המחבר בין שתי הטבלאות. יפתח חלון שבו אתה בוחר את סוג הצירוף. אם בחרת נכון, הקו המחבר הנ"ל יהפוך לחץ מהטבלה שמכילה את כל הרשומות (=לקוחות) לטבלה שבה נמצאים רק חלק מהלקוחות (=תשלומים)
-
@איש-ימיני תעשה union all - שאילתת איחוד
על 2 טבלאות התשלומים
ואז תסכם את השאילתה המאוחדת. -
@odeddvir אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
@איש-ימיני אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
השאלה איך אני עושה שיופיעו כל הלקוחות בשאילתה, ואצל כל אחד יוצג התשלומים שלו, אם יש לו תשלומים.
זה SQL בסיסי:
אתה צריך להשתמש בשאילתא עם Outer-Join (זה צירוף לכיוון אחד, ונקרא גם באקסס Left-Join או Right-Join). הצירוף הזה מציג את כל הרשומות מטבלה אחת ורק את הרשומות המתאימות מטבלה אחרת.
בעורך השאילתא של אקסס תקליק על הקו המחבר בין שתי הטבלאות. יפתח חלון שבו אתה בוחר את סוג הצירוף. אם בחרת נכון, הקו המחבר הנ"ל יהפוך לחץ מהטבלה שמכילה את כל הרשומות (=לקוחות) לטבלה שבה נמצאים רק חלק מהלקוחות (=תשלומים)
תודה רבה.
עזר לי מאוד. -
@odeddvir אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
שאילתת איחוד לא תפתור את הבעיה, כי לקוחות שלא מופיעים כלל בשום טבלת תשלומים לא יוצגו.
אפשר להוסיף לשאילתת איחוד, גם את הלקוחות, (כמובן להוסיף עוד עמודות ריקות במקום העמודות של התשלומים ובתשלומים להוסיף במקום הלקוח, וכו'.)
ואז לעשות סיכום לפי לקוח, sum בתשלום1 ו sum בתשלום2 -
@avi-rz אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
אפשר להוסיף לשאילתת איחוד, גם את הלקוחות, (כמובן להוסיף עוד עמודות ריקות במקום העמודות של התשלומים ובתשלומים להוסיף במקום הלקוח, וכו'.)
ואז לעשות סיכום לפי לקוח, sum בתשלום1 ו sum בתשלום2מצו' דוגמא.
דוגמא 3.accdb
רק צריך תשומת לב למהירות התגובה, אם באמת מדובר בהמון שורות. -
@מלא אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
@avi-rz
כדברי @OdedDvir אין צורך בשאילתת איחוד,
הוא הרי רוצה להציג את כל הלקוחות + התשלומים
שלצורך כך, הוא יכול להגדיר left join מהלקוחות לשני טבלאות התשלומים בשאילתה אחת.השאלה מה יגיב יותר מהיר,
2 left joinים או שאילתת איחוד.צודק!
בעיקר התמקדתי ב@odeddvir אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
שאילתת איחוד לא תפתור את הבעיה,
-
@avi-rz אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
אפשר להוסיף לשאילתת איחוד, גם את הלקוחות, (כמובן להוסיף עוד עמודות ריקות במקום העמודות של התשלומים ובתשלומים להוסיף במקום הלקוח, וכו'.)
אכן אפשר, אך זו דרך עקומה ומסורבלת. אם נמשיך בדרך זו, אפשר גם ליישם JOIN רגיל על ידי שאילתת איחוד, אבל למה להסתבך לחינם? אני לא רואה שום יתרון בה, לא מבחינת היעילות ולא מבחינת הפשיטות. לשם כך המציאו את ה-JOIN.
-
@odeddvir אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
@איש-ימיני אמר בעזרה בחישוב תשלומים בשאילתה באקסס:
השאלה איך אני עושה שיופיעו כל הלקוחות בשאילתה, ואצל כל אחד יוצג התשלומים שלו, אם יש לו תשלומים.
זה SQL בסיסי:
אתה צריך להשתמש בשאילתא עם Outer-Join (זה צירוף לכיוון אחד, ונקרא גם באקסס Left-Join או Right-Join). הצירוף הזה מציג את כל הרשומות מטבלה אחת ורק את הרשומות המתאימות מטבלה אחרת.
בעורך השאילתא של אקסס תקליק על הקו המחבר בין שתי הטבלאות. יפתח חלון שבו אתה בוחר את סוג הצירוף. אם בחרת נכון, הקו המחבר הנ"ל יהפוך לחץ מהטבלה שמכילה את כל הרשומות (=לקוחות) לטבלה שבה נמצאים רק חלק מהלקוחות (=תשלומים)
אי אפשר לשנות נתונים בשאילתה כזאת?
אני מדבר על עמודות רגילות ללא חישוב.