מבקש עזרה לכתיבת שאילתה מ-2 טבלאות

מבקש עזרה לכתיבת שאילתה מ-2 טבלאות

נתון: 2 טבלאות, עם שדות זהים: לקוח, סכום ותאריך
ידוע: שאין רציפות בתאריכים, כלומר יכול להיות תאריך מסוים בטבלה 1 אבל הוא לא קיים בטבלה השניה
אני צריך שאילתה שתתן לי שורה לכל תאריך עם ס"ה סכום לתאריך, עבור לקוח מסויים

אז נגיד שיש את הנתונים הבאים:
טבלה 1:
דוד 50 31/1/2012

טבלה 2:
דוד 2 31/1/2012
דוד 3 31/1/2012
דוד 2 27/3/2012

הגעתי למשהו כזה...אבל זה לא טוב

SELECT SUM(s.total) AS total1, SUM(p.total) AS total2, s.date
FROM table1 as s, table2 as p
WHERE s.name = 'דוד'
GROUP BY s.date
ORDER BY s.date


אז אני מקבל פלט שגוי כלהלן:
total1 total2 date
31/1/2012 100 5
27/3/2012 50 2

ואני רוצה לקבל :
total1 total2 date
31/1/2012 50 5
27/3/2012 2

אז איך כותבים את השאילתה ?
 

mutex64

New member
תנסה משהו בסגנון

SELECT p.date, total1, total2
FROM (
SELECT date, SUM(total) AS total1
FROM table1
WHERE name = 'דוד'
GROUP BY date
ORDER BY date
) p INNER JOIN (
SELECT SUM(total) AS total2, date
FROM table2
WHERE name = 'דוד'
GROUP BY date
ORDER BY date ) s on s.date = p.date
 

bnayal

New member
אני חושב שהכיוון הוא תת-שאילתה

אם תרצה יותר ספציפי תגיד
 
אני אשמח


 

bnayal

New member
כמו שכבר הראו

|

SELECT t1.name, t1.day, t1.total1, t2.total2 FROM
(SELECT name, day, SUM(total) as total1 FROM table1 GROUP BY day, name) as t1
INNER JOIN
(SELECT name, day, SUM(total) as total2 FROM table2 GROUP BY day, name) as t2
ON (t1.day = t2.day AND t1.name = t2.name)

משהו כזה
זה לא לוקח בחשבון מקרים שיש רק באחת מהטבלאות נתונים על יום כלשהו (במקרה כזה לא תקבל שורה על אותו יום).

מבנה הטבלאות שניסיתי הוא שתי טבלאות (table1 + table2) שבכל אחת מהן שלוש עמודות name day total.
אולי אפשר לייעל את השאילתה, לא התעמקתי וגם לא ציינת בדיוק מה בדיוק יש בטבלאות האלו כדי להמליץ על מבנה נתונים אחר...

בניה
 
למעלה