ABA


"צריך עזרה בשאילתת MYSQL"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #13722 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13722
lior066

   01:11   29.03.08   
אל הפורום  
  צריך עזרה בשאילתת MYSQL  
 
   מה המצב אנשים , אני צריך עזרה קטנה באיזה שאילתה טיפה מסובכת.

טוב אז יש לי 2 טבלאות.


מפרסם:
==Advertiser==
id
name
email
ratio
active


פרסומת:
==ads==
id
exposes
clicks
advertiser
adtype

יש קשר גומלין : advertiser.id = ads.advertiser

המטרה שלי היא לקבל טבלה שבה יש לי את הרשימה של המפרסמים כלומר ID,NAME מתוך ADVERTISER ואת סכום הלחיצות והחשיפות מהטבלה ADS , EXPOSES, CLICKS

עכשיו יש לי את המשפט הבא :



Select advertiser.id,advertiser.name,advertiser.Active,advertiser.ratio,advertiser.email,
Sum(ads.clicks) as Ccount,SUM(ads.exposes) as Fcount
from ads INNER JOIN advertiser ON advertiser.id = ads.advertiser Group by advertiser.id

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


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  עקרונית אני לא רואה שום בעיה בשאילתא , akoka 29.03.08 01:34 1
     אחי תודה על התשובה.. lior066 29.03.08 03:44 2
         יש דרך כתבתי לך עם SubSelect akoka 29.03.08 04:16 3
             ניסתי זה לא עוזר כי אני לא צריך לספור.. lior066 29.03.08 06:39 4
     למה?! Dotan  29.03.08 10:08 5
         חח לא הבנת akoka 29.03.08 10:27 6
  תשתמש עם Left Join CaTz 29.03.08 11:30 7
     הוא עדיין משמיט לי את המפרסמים שאין להם ערכים ב ADS lior066 29.03.08 19:48 8
         אהה...וואי... CaTz 29.03.08 19:56 9
             לא עובד.. אותו הדבר.. lior066 29.03.08 21:26 10

       
akoka

   01:34   29.03.08   
אל הפורום  
  1. עקרונית אני לא רואה שום בעיה בשאילתא ,  
בתגובה להודעה מספר 0
 
   אבל אם SUM עושה לך בעיה אני הייתי שולף את הכול קודם אל תוך מערך ואז עושה בPHP


$clicks = array_sum($row_clicks);
$exposes= array_sum($row_exposes);

אני חושב שsum מחייב אותך שיהיה ערך אחד בכללי ככה שהוא לא ייצטרך לעשות 0+0+0+0.... שוב יכול ליהיות שאני טועה,אפשרות אחרת היא לשלוף את כול הערכים אל תוך temp table וממנה לשלוף את הכול ,אבל שוב אין לי מושג למה נוצרת לך בעיה השאילתא שלך נראתי סבבה לגמרי למרות שאתה יכול לקצר אותה בהרבה אם תשתמש ב advertiser.*,ads.* FROM ads,advertiser ככה כותבים inner join בצורה החופשית מה שגם אתה לא מוכרח לכתוב inner join אבל זה עניין של נוחות.

עוד אפשרות זה להשתמש בSub Select שיש אשכול של MoonHunter שהוא הדגים איך משתמשים בזה ככה תוכל לשלוף את הסכום של ההצבעות קודם כול ורק אז את שאר הנתונים.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

   03:44   29.03.08   
אל הפורום  
  2. אחי תודה על התשובה..  
בתגובה להודעה מספר 1
 
   אני מנסה להכניס את הנתונים לתוך טבלה ב ASP.NET עכשיו אם אני יעשה את זה בשיטה מפורקת של נגיד לחבר לבד את הסכומים ואז לקרוא את הטבלה זה לא ילך , כי אני לא בונה את זה כמו ב PHP .. אני יכול ללכת לדרך הארוכה פה ולהתחיל לרוץ עם המסד נתונים אבל אני מנסה לחסוך בכמה שיותר קריאות למסד נתונים.

חייבת להיות איזה שאילתה שתעשה דבר שכזה... זה אמור להחיר לי NULL אם אין לו ערכים למלות אבל עדיין לתת לי את הבחירה שלי בלי שום קשר.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   04:16   29.03.08   
אל הפורום  
  3. יש דרך כתבתי לך עם SubSelect  
בתגובה להודעה מספר 2
 
   כנס לפה
http://rotter.name/nor/webgraph/13716.shtml


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

   06:39   29.03.08   
אל הפורום  
  4. ניסתי זה לא עוזר כי אני לא צריך לספור..  
בתגובה להודעה מספר 3
 
   אם הייתי אמור לספור אז זה היה בסדר ועובד והכל טוב ויפה אבל אני צריך לבצע חישוב סכומים ולא כלליים אלא לפי אי די מסויים של קשר גומלין...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dotan  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.10.03
2849 הודעות, 2 פידבק
   10:08   29.03.08   
אל הפורום  
  5. למה?!  
בתגובה להודעה מספר 1
 
   יש פונקציה בשם mysql_num_rows שמקבל query אחרי שהרצת אותו ונותנת לך את מספר הרשומות שהוא החזיר...

לדוגמא:


$query = mysql_query("SELECT ...");
$numrows = mysql_num_rows($query);

:|


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   10:27   29.03.08   
אל הפורום  
  6. חח לא הבנת  
בתגובה להודעה מספר 5
 
   אני לא מחפש את מספר השורות אני מחפש את סכום כול השורות אז תאר לך שאני מקבל כול שורה במערך שקוראים לו clicks אז אני עושה array_sum לכול השורות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   11:30   29.03.08   
אל הפורום  
  7. תשתמש עם Left Join  
בתגובה להודעה מספר 0
 
   מה שזה עושה זה מוציא בכל מקרה מהחלק השמאלי של השאילתא שלך גם אם אין "למפרסם פירסומת" כלומר זה יראה ככה:


Select advertiser.id,advertiser.name,advertiser.Active,advertiser.ratio,advertiser.email,Sum(ads.clicks) as Ccount,SUM(ads.exposes) as Fcount from ads Left JOIN advertiser ON advertiser.id = ads.advertiser Group by advertiser.id

הסבר:
http://www.wellho.net/mouth/158_MySQL-LEFT-JOIN-and-RIGHT-JOIN-INNER-JOIN-and-OUTER-JOIN.html


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

   19:48   29.03.08   
אל הפורום  
  8. הוא עדיין משמיט לי את המפרסמים שאין להם ערכים ב ADS  
בתגובה להודעה מספר 7
 
   זה הקובץ של ה SQL עשיתי גיבוי לטבלאות ...
http://rotter.name/User_files/nor/47ee728d7cc670a4.txt


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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   19:56   29.03.08   
אל הפורום  
  9. אהה...וואי...  
בתגובה להודעה מספר 8
 
   טעות שלי...
תעשה Left OUTER JOIN וזה יעבוד לך בדוק...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

   21:26   29.03.08   
אל הפורום  
  10. לא עובד.. אותו הדבר..  
בתגובה להודעה מספר 9
 
   לצערי אני רואה שזה לא עובד.. ... אני ינסה כמה דברים בינתיים אני יחכה פה לשתובה אם לא יצליח לי אני יעשה את זה ב HARD CODE לצערי..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net