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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 05-02-16, 00:05   # 1
while1
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Jan 2015
הודעות: 34
Send a message via Skype™ to while1

while1 לא מחובר  

אני לא מכיר את המבנה של הטבלאות שלך,
אז אני אצא מהנחה שאתה עדיין רוצה את זה פר משתמש, ויש קשר גם בין הטבלה 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`
ושוב, אם אתה רוצה להחזיר רק משתמש אחד, אז תשנה את השורה האחרונה של הGROUP BY לזה:

קוד:
WHERE `user`.`UserId` = 1

(מן הסתם שאין לי איך לבדוק אם זה עובד ואם אין טעות איפשהו בתחביר או בשמות השדות והטבלאות)
  Reply With Quote
ישן 05-02-16, 10:28   # 2
pcnet
חבר בקהילה
 
pcnet's Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2014
מיקום: בני ברק
הודעות: 51

pcnet לא מחובר  

ציטוט:
נכתב במקור על ידי while1 צפה בהודעה
אני לא מכיר את המבנה של הטבלאות שלך,
אז אני אצא מהנחה שאתה עדיין רוצה את זה פר משתמש, ויש קשר גם בין הטבלה 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`
ושוב, אם אתה רוצה להחזיר רק משתמש אחד, אז תשנה את השורה האחרונה של הGROUP BY לזה:

קוד:
WHERE `user`.`UserId` = 1

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

הקוד עובד כמו שצריך

רק בעיה אחת יש בזה, זה מציג נתונים לא אמיתיים.

במקום 1000 זה מציג 5000
  Reply With Quote
ישן 05-02-16, 12:22   # 3
while1
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Jan 2015
הודעות: 34
Send a message via Skype™ to while1

while1 לא מחובר  

אוקיי,
עשיתי אתמול טעות בגלל השעה המאוחרת. מתנצל.

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

מקווה שעכשיו זה יעבוד נכון ואין טעויות.
  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. הזמן כעת הוא 08:28.

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