הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   אני מנסה להציג סך הכנסות לכל משתמש וזה מציג את הסך של כל המשתמשים (https://hosts.co.il/forums/showthread.php?t=109850)

pcnet 02-02-16 22:30

אני מנסה להציג סך הכנסות לכל משתמש וזה מציג את הסך של כל המשתמשים
 
אולי חסר משהו בקוד שפיספסתי

PHP קוד:

$GetAllIncome      "SELECT user.UserId, SUM(Amount) AS Amount FROM assets left join user on assets.UserId = user.UserId WHERE user.UserId";
$GetAIncome         mysqli_query($mysqli$GetAllIncome); 

הצגת נתונים

PHP קוד:

                                 <?php while($co mysqli_fetch_assoc($GetAIncome)){ ?>                                                             
                            <tr>
                            <td><?php echo $co['user.UserId'];?></td>                                                                                                    
                            <td><?php echo number_format($co['Amount']); ?></td>
                            </tr>
                             <?php ?>

תודה לעוזרים

while1 02-02-16 22:55

אני לא מבין מה ניסית לעשות בשאילתה.

1. הWHERE שלך לא שלם.

2. אתה לא משתמש בכלל בטבלה users, סתם "צירפת" אותה.


אם אתה רוצה סכום פר משתמש (ולהחזיר את כל המשתמשים):

קוד:

SELECT `UserId` , SUM(`Amount`) AS `Amount` FROM `assets`
GROUP BY `UserId`

אם אתה רוצה להחזיר רק משתמש אחד:

קוד:

SELECT `UserId` , SUM(`Amount`) AS `Amount` FROM `assets`
WHERE `UserId` = 1

ואם בכל זאת אתה רוצה לצרף את הטבלה users, אז לתוך אחד משני אלה תוסיף את הLEFT JOIN.

pcnet 02-02-16 23:23

ציטוט:

נכתב במקור על ידי while1 (פרסם 899257)
אני לא מבין מה ניסית לעשות בשאילתה.

1. הWHERE שלך לא שלם.

2. אתה לא משתמש בכלל בטבלה users, סתם "צירפת" אותה.


אם אתה רוצה סכום פר משתמש (ולהחזיר את כל המשתמשים):

קוד:

SELECT `UserId` , SUM(`Amount`) AS `Amount` FROM `assets`
GROUP BY `UserId`

אם אתה רוצה להחזיר רק משתמש אחד:

קוד:

SELECT `UserId` , SUM(`Amount`) AS `Amount` FROM `assets`
WHERE `UserId` = 1

ואם בכל זאת אתה רוצה לצרף את הטבלה users, אז לתוך אחד משני אלה תוסיף את הLEFT JOIN.

פתרון מבריק. תודה..

ואני כן משתמש בטבלת user בשביל להציג את שם המשתמש ולידו את משבצת סיכום ההכנסות

pcnet 03-02-16 17:22

ציטוט:

נכתב במקור על ידי while1 (פרסם 899257)
אני לא מבין מה ניסית לעשות בשאילתה.

1. הWHERE שלך לא שלם.

2. אתה לא משתמש בכלל בטבלה users, סתם "צירפת" אותה.


אם אתה רוצה סכום פר משתמש (ולהחזיר את כל המשתמשים):

קוד:

SELECT `UserId` , SUM(`Amount`) AS `Amount` FROM `assets`
GROUP BY `UserId`

אם אתה רוצה להחזיר רק משתמש אחד:

קוד:

SELECT `UserId` , SUM(`Amount`) AS `Amount` FROM `assets`
WHERE `UserId` = 1

ואם בכל זאת אתה רוצה לצרף את הטבלה users, אז לתוך אחד משני אלה תוסיף את הLEFT JOIN.

ואם אני רוצה לקחת סיכום נתונים גם מטבלת bills איך אני עושה את זה

PHP קוד:

SUM(Amount) AS Amount FROM bills 

מה אפשרי לעשות

ואיך אני מציג את נתוני ההוצאה במסך הכללי הבא.

PHP קוד:

                                 <?php while($co mysqli_fetch_assoc($GetAIncome)){ ?>                                                              
                            <tr> 
                            <td><?php echo $co['user.UserId'];?></td>                                                                                                     
                            <td><?php echo number_format($co['Amount']); ?></td> 
                            </tr> 
                             <?php ?>

תודה רבה

while1 04-02-16 15:18

לא הבנתי מה אתה רוצה לעשות,
ומה שונה ממה שכבר עניתי לך...

pcnet 04-02-16 20:59

ציטוט:

נכתב במקור על ידי while1 (פרסם 899271)
לא הבנתי מה אתה רוצה לעשות,
ומה שונה ממה שכבר עניתי לך...

אני התכוונתי שאני רוצה לשאוב נתונים גם מטבלת bills במסד נתונים ביחד עם טבלת assets

PHP קוד:

SELECT `UserId` , SUM(`Amount`) AS `AmountFROM `assets
GROUP BY `UserId

ולהכניס לקוד הקודם גם את הנתונים הבאים

PHP קוד:

SUM(Amount) AS Amount FROM bills 

איך אני עושה את זה

ושוב תודה רבה

while1 05-02-16 00:05

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

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

pcnet 05-02-16 10:28

ציטוט:

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

while1 05-02-16 12:22

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

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

מקווה שעכשיו זה יעבוד נכון ואין טעויות.

pcnet 05-02-16 14:06

תודה רבה עזרת לי מאוד

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

PHP קוד:

$CountTotals $co['a_sum'] - $co['b_sum']; 



כל הזמנים הם GMT +2. הזמן כעת הוא 18:01.

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