|
||||||||||
| הרשם | ![]() |
שאלות ותשובות | ![]() |
רשימת חברים | ![]() |
לוח שנה | ![]() |
הודעות מהיום | ![]() |
חיפוש | ![]() |
|
|||||||
![]() |
|
|
כלים לאשכול | תצורת הצגה |
|
|
|
|
# 1 |
|
חבר חדש
|
אני לא מכיר את המבנה של הטבלאות שלך,
אז אני אצא מהנחה שאתה עדיין רוצה את זה פר משתמש, ויש קשר גם בין הטבלה bills לטבלה users. (אולי יש דרכים אחרות, יעילות יותר) אני הייתי עושה משהו כזה - להחזיר את כל המשתמשים: קוד:
SELECT `user`.`UserId` , SUM(`assets`.`Amount`) as `a_sum` , SUM(`bills`.`Amount`) as `b_sum` FROM `user` LEFT JOIN `assets` ON `user`.`UserId` = `assets`.`UserId` LEFT JOIN `bills` ON `user`.`UserId` = `bills`.`UserId` GROUP BY `user`.`UserId` קוד:
WHERE `user`.`UserId` = 1 (מן הסתם שאין לי איך לבדוק אם זה עובד ואם אין טעות איפשהו בתחביר או בשמות השדות והטבלאות)
__________________
המשך יום טוב, מתן ![]() אתר חדשות האינטרנט - אפליקציית אנדרואיד אפליקציית לוח שידורים מעודכן |
|
|
|
# 2 | |
|
חבר בקהילה
|
ציטוט:
הקוד עובד כמו שצריך רק בעיה אחת יש בזה, זה מציג נתונים לא אמיתיים. במקום 1000 זה מציג 5000 |
|
|
|
|
# 3 |
|
חבר חדש
|
אוקיי,
עשיתי אתמול טעות בגלל השעה המאוחרת. מתנצל. LEFT JOIN מחזיר כמה פעמים (כפילויות) את אותה השורה לפי מספר השורות שקיימות בטבלאות assets ו bills, ובגלל זה הסיכום הכללי יוצא גבוה מדי ושגוי. הפיתרון צריך להיות שונה, משהו כזה - קוד:
SELECT `user`.`UserId` ,
(SELECT SUM(`Amount`) FROM `assets` WHERE `UserId` = `user`.`UserId`) as `a_sum`,
(SELECT SUM(`Amount`) FROM `bills` WHERE `UserId` = `user`.`UserId`) as `b_sum`
FROM `user`
קוד:
WHERE `UserId` = 1 מקווה שעכשיו זה יעבוד נכון ואין טעויות.
__________________
המשך יום טוב, מתן ![]() אתר חדשות האינטרנט - אפליקציית אנדרואיד אפליקציית לוח שידורים מעודכן |
|
![]() |
| חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|