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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 02-02-16, 22:30   # 1
pcnet
חבר בקהילה
 
pcnet's Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2014
מיקום: בני ברק
הודעות: 51

pcnet לא מחובר  

אני מנסה להציג סך הכנסות לכל משתמש וזה מציג את הסך של כל המשתמשים

אולי חסר משהו בקוד שפיספסתי

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 ?>
תודה לעוזרים
  Reply With Quote
ישן 02-02-16, 22:55   # 2
while1
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Jan 2015
הודעות: 34
Send a message via Skype™ to while1

while1 לא מחובר  

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

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.
  Reply With Quote
ישן 02-02-16, 23:23   # 3
pcnet
חבר בקהילה
 
pcnet's Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2014
מיקום: בני ברק
הודעות: 51

pcnet לא מחובר  

ציטוט:
נכתב במקור על ידי while1 צפה בהודעה
אני לא מבין מה ניסית לעשות בשאילתה.

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 בשביל להציג את שם המשתמש ולידו את משבצת סיכום ההכנסות
  Reply With Quote
ישן 03-02-16, 17:22   # 4
pcnet
חבר בקהילה
 
pcnet's Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2014
מיקום: בני ברק
הודעות: 51

pcnet לא מחובר  

ציטוט:
נכתב במקור על ידי while1 צפה בהודעה
אני לא מבין מה ניסית לעשות בשאילתה.

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 ?>
תודה רבה
  Reply With Quote
ישן 04-02-16, 15:18   # 5
while1
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Jan 2015
הודעות: 34
Send a message via Skype™ to while1

while1 לא מחובר  

לא הבנתי מה אתה רוצה לעשות,
ומה שונה ממה שכבר עניתי לך...
  Reply With Quote
ישן 04-02-16, 20:59   # 6
pcnet
חבר בקהילה
 
pcnet's Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2014
מיקום: בני ברק
הודעות: 51

pcnet לא מחובר  

ציטוט:
נכתב במקור על ידי while1 צפה בהודעה
לא הבנתי מה אתה רוצה לעשות,
ומה שונה ממה שכבר עניתי לך...
אני התכוונתי שאני רוצה לשאוב נתונים גם מטבלת bills במסד נתונים ביחד עם טבלת assets

PHP קוד:
SELECT `UserId` , SUM(`Amount`) AS `AmountFROM `assets
GROUP BY `UserId
ולהכניס לקוד הקודם גם את הנתונים הבאים

PHP קוד:
SUM(Amount) AS Amount FROM bills 
איך אני עושה את זה

ושוב תודה רבה
  Reply With Quote
ישן 05-02-16, 00:05   # 7
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   # 8
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   # 9
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
ישן 05-02-16, 14:06   # 10
pcnet
חבר בקהילה
 
pcnet's Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2014
מיקום: בני ברק
הודעות: 51

pcnet לא מחובר  

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

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

PHP קוד:
$CountTotals $co['a_sum'] - $co['b_sum']; 
  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. הזמן כעת הוא 23:54.

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