דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שאילתא של כניסות חדשות

שאילתא של כניסות חדשות

מתוזמן נעוץ נעול הועבר תכנות
21 פוסטים 5 כותבים 303 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מלאמ מנותק
    מלאמ מנותק
    מלא
    כתב ב נערך לאחרונה על ידי מלא
    #2

    @שואף
    נרשם גם תאריך החיוג או רק השעה?

    אם יש גם תאריך
    תוכל לעשות group על המספר ו first על התאריך
    ולסנן רק את אתמול

    תגובה 1 תגובה אחרונה
    0
    • שואףש שואף

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

      הצורה הפרימיטיבית היא לעשות SELECT DISTINCT PHONE כדי לספור כמה מספרים שונים יש בטבלא, ואז לעשות אותה שאילתא עם WHERE DATE עד אתמול, ולחשב את ההפרש.
      אבל אמור להיות דרך לעשות את זה בפקודה אחת. חיפשתי בסטאק אבל לא ידעתי איך לנסח את השאלה (NEW DISTINCT ENTRYS, החזיר דברים אחרים)
      אשמח לעזרה ממי שהבין את השאלה 🙄

      clickoneC מנותק
      clickoneC מנותק
      clickone
      כתב ב נערך לאחרונה על ידי
      #3

      @שואף תשתמש בnot in עם טבלת משנה
      דוגמא בשליפה

       SELECT DISTINCT phone from sometable
      where date=getdate() and phone not in (select  phone from sometable where date <getdate())
      

      אין טסט כמו פרודקשן.

      המייל שלי urivpn@gmail.com

      תגובה 1 תגובה אחרונה
      2
      • dovidD מנותק
        dovidD מנותק
        dovid
        ניהול
        כתב ב נערך לאחרונה על ידי dovid
        #4
        SELECT  *  
        FROM TABLE
        GROUP BY TABLE.Phone
        HAVING COUNT(*) = 1 AND TABLE.AT >= CURDATE()
        

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

        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        clickoneC תגובה 1 תגובה אחרונה
        1
        • dovidD dovid
          SELECT  *  
          FROM TABLE
          GROUP BY TABLE.Phone
          HAVING COUNT(*) = 1 AND TABLE.AT >= CURDATE()
          

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

          clickoneC מנותק
          clickoneC מנותק
          clickone
          כתב ב נערך לאחרונה על ידי clickone
          #5

          @dovid הבעייה שיכול להיות שיום הוא התקשר פעמיים
          ואז הCOUNT לא עוזר 😮

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          תגובה 1 תגובה אחרונה
          1
          • dovidD מנותק
            dovidD מנותק
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי
            #6

            @clickone אם אכן זה מה שהוא רוצה אז אתה צודק, והנה אם כן:

            SELECT  *  
            FROM TABLE
            GROUP BY TABLE.Phone
            HAVING MIN(TABLE.AT) >= CURDATE()
            
            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            תגובה 1 תגובה אחרונה
            3
            • שואףש מנותק
              שואףש מנותק
              שואף
              כתב ב נערך לאחרונה על ידי שואף
              #7

              @dovid תודה רבה רבה!!!
              עובד נפלא

              ליצירת קשר: admin@i-call.me

              הידד! גישה למייל גם בלי מחשב ואינטרנט!

              תגובה 1 תגובה אחרונה
              0
              • שואףש מנותק
                שואףש מנותק
                שואף
                כתב ב נערך לאחרונה על ידי
                #8

                אני מנסה לעשות count לקבלת הסכום הכללי (התוצאות של המספרים לא מעניינים אותי כרגע), וזה לא תופס. זה מחזיר רשימה ארוכה של מספרים בלי קשר.

                SELECT count(id) FROM asteriskcdrdb.cdr GROUP BY cdr.src HAVING MIN(cdr.calldate) >= CURDATE()
                

                ליצירת קשר: admin@i-call.me

                הידד! גישה למייל גם בלי מחשב ואינטרנט!

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid
                  ניהול
                  כתב ב נערך לאחרונה על ידי dovid
                  #9

                  כי אתה עושה count על כל קבוצה.
                  תעשה count מסביב לשאילתה כולה:

                  SELECT COUNT(*) FROM 
                  (
                     SELECT id
                     FROM asteriskcdrdb.cdr 
                     GROUP BY cdr.src 
                     HAVING MIN(cdr.calldate) >= CURDATE()
                  ) AS subQuery
                  
                  • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                  • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                  תגובה 1 תגובה אחרונה
                  2
                  • שואףש מנותק
                    שואףש מנותק
                    שואף
                    כתב ב נערך לאחרונה על ידי
                    #10

                    @dovid נפלא

                    עכשיו אני מנסה להגביל את זה לפי תנאי מסוים, שיהיה תואם לשם מערכת (יש לי כמה מערכות על אותה מרכזיה, ואני רוצה לדעת למערכת הספציפית הזו כמה חדשים נכנסו.
                    ויש דבר מעניין. אם אני מגביל עם WHERE יוצא תוצאה אחת, ואם אני מגביל בHAVING יוצא משהו אחר.
                    אני מבין שהחישוב כנראה מתבצע בצורה אחרת, אבל איך אפשר לדעת מה התוצאה האמיתית

                    SELECT * FROM asteriskcdrdb.cdr GROUP BY cdr.src HAVING MIN(cdr.calldate) >= CURDATE() AND dcontext='XXX'
                    
                    SELECT * FROM asteriskcdrdb.cdr WHERE dcontext='XXX' GROUP BY cdr.src HAVING MIN(cdr.calldate) >= CURDATE()
                    

                    ליצירת קשר: admin@i-call.me

                    הידד! גישה למייל גם בלי מחשב ואינטרנט!

                    dovidD תגובה 1 תגובה אחרונה
                    0
                    • שואףש שואף

                      @dovid נפלא

                      עכשיו אני מנסה להגביל את זה לפי תנאי מסוים, שיהיה תואם לשם מערכת (יש לי כמה מערכות על אותה מרכזיה, ואני רוצה לדעת למערכת הספציפית הזו כמה חדשים נכנסו.
                      ויש דבר מעניין. אם אני מגביל עם WHERE יוצא תוצאה אחת, ואם אני מגביל בHAVING יוצא משהו אחר.
                      אני מבין שהחישוב כנראה מתבצע בצורה אחרת, אבל איך אפשר לדעת מה התוצאה האמיתית

                      SELECT * FROM asteriskcdrdb.cdr GROUP BY cdr.src HAVING MIN(cdr.calldate) >= CURDATE() AND dcontext='XXX'
                      
                      SELECT * FROM asteriskcdrdb.cdr WHERE dcontext='XXX' GROUP BY cdr.src HAVING MIN(cdr.calldate) >= CURDATE()
                      
                      dovidD מנותק
                      dovidD מנותק
                      dovid
                      ניהול
                      כתב ב נערך לאחרונה על ידי dovid
                      #11

                      WHERE זה תנאי על רמת שורה, זה מתבצע לפני הקיבוץ.
                      ואילו HAVING מתבצע ברמת קיבוץ. כלומר אחרי הקיבוץ כלול רק שורות שאחרי הקיבוץ יעמדו בתנאי כל שהוא.

                      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                      תגובה 1 תגובה אחרונה
                      4
                      • שואףש מנותק
                        שואףש מנותק
                        שואף
                        כתב ב נערך לאחרונה על ידי
                        #12

                        ממילא פשוט שצריך לעשות WHERE
                        תודה רבה עזרת לי מאוד

                        אף פעם לא התעמקתי בפונקציות המתקדמות של MYSQL...

                        ליצירת קשר: admin@i-call.me

                        הידד! גישה למייל גם בלי מחשב ואינטרנט!

                        dovidD תגובה 1 תגובה אחרונה
                        0
                        • שואףש שואף

                          ממילא פשוט שצריך לעשות WHERE
                          תודה רבה עזרת לי מאוד

                          אף פעם לא התעמקתי בפונקציות המתקדמות של MYSQL...

                          dovidD מנותק
                          dovidD מנותק
                          dovid
                          ניהול
                          כתב ב נערך לאחרונה על ידי
                          #13

                          @שואף זה בכלל לא מתקדמות.
                          זה נחשב בסיס, יש באמת פונקציות מתקדמות כמו פונקציות חלון וWITH ועוד.

                          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                          תגובה 1 תגובה אחרונה
                          4
                          • שואףש מנותק
                            שואףש מנותק
                            שואף
                            כתב ב נערך לאחרונה על ידי שואף
                            #14

                            הייתי צריך לשלב עוד שתי שאילתות.
                            אני צריך את רשימת המשתמשים, עם סך ההתקשרויות שלהם, ואורך הכולל של השיחות שלהם.
                            עשיתי count(src) מניח שככה זה צריך להיות, נכון?

                            SELECT src, count(src), sum(billsec) 
                            FROM asteriskcdrdb.cdr 
                            WHERE dcontext='telecall' 
                            GROUP BY cdr.src 
                            HAVING MIN(cdr.calldate) >= CURDATE()
                            

                            ליצירת קשר: admin@i-call.me

                            הידד! גישה למייל גם בלי מחשב ואינטרנט!

                            תגובה 1 תגובה אחרונה
                            2
                            • dovidD מנותק
                              dovidD מנותק
                              dovid
                              ניהול
                              כתב ב נערך לאחרונה על ידי dovid
                              #15

                              נראה טוב.

                              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                              תגובה 1 תגובה אחרונה
                              2
                              • שואףש מנותק
                                שואףש מנותק
                                שואף
                                כתב ב נערך לאחרונה על ידי
                                #16

                                @dovid נפלתי עליך...
                                אני משכלל את הפקודה לאט לאט, ועכשיו רציתי לשלב את שמות המתקשרים
                                יש לי טבלא בשם NAMES, עם שתי שדות, name וphone.יש שם מאגר גדול של מספרים, עם השם שלהם.
                                אני רוצה לעשות שאילתא של המתקשרים החדשים, כנ"ל, עם השם שלהם.
                                עשיתי INNER JOIN, וזה תוקע את המעבד, מקפיץ את הCPU ולא מחזיר כלום
                                כנראה טעיתי, אשמח שתכוון אותי

                                SELECT cdr.src, NAMES.name FROM cdr
                                INNER JOIN NAMES ON NAMES.phone=cdr.src
                                GROUP BY cdr.src
                                HAVING MIN(cdr.calldate) >= CURDATE();
                                

                                תודה רבה

                                ליצירת קשר: admin@i-call.me

                                הידד! גישה למייל גם בלי מחשב ואינטרנט!

                                dovidD תגובה 1 תגובה אחרונה
                                0
                                • שואףש שואף

                                  @dovid נפלתי עליך...
                                  אני משכלל את הפקודה לאט לאט, ועכשיו רציתי לשלב את שמות המתקשרים
                                  יש לי טבלא בשם NAMES, עם שתי שדות, name וphone.יש שם מאגר גדול של מספרים, עם השם שלהם.
                                  אני רוצה לעשות שאילתא של המתקשרים החדשים, כנ"ל, עם השם שלהם.
                                  עשיתי INNER JOIN, וזה תוקע את המעבד, מקפיץ את הCPU ולא מחזיר כלום
                                  כנראה טעיתי, אשמח שתכוון אותי

                                  SELECT cdr.src, NAMES.name FROM cdr
                                  INNER JOIN NAMES ON NAMES.phone=cdr.src
                                  GROUP BY cdr.src
                                  HAVING MIN(cdr.calldate) >= CURDATE();
                                  

                                  תודה רבה

                                  dovidD מנותק
                                  dovidD מנותק
                                  dovid
                                  ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #17

                                  @שואף אני לא רואה בעיה בשאילתה שלך (למעט שכנראה אתה רוצה LEFT JOIN ולא INNER).
                                  הסיבה שלא מחזיר כלום זה כי אין התאמה לכאורה..
                                  מה טיפוסי השדות של cdr ושל phone, שניהם varchare? שניהם מאונדקסים?

                                  • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                  • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                  תגובה 1 תגובה אחרונה
                                  0
                                  • שואףש מנותק
                                    שואףש מנותק
                                    שואף
                                    כתב ב נערך לאחרונה על ידי
                                    #18

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

                                    ליצירת קשר: admin@i-call.me

                                    הידד! גישה למייל גם בלי מחשב ואינטרנט!

                                    yossizY תגובה 1 תגובה אחרונה
                                    0
                                    • שואףש שואף

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

                                      yossizY מנותק
                                      yossizY מנותק
                                      yossiz
                                      כתב ב נערך לאחרונה על ידי
                                      #19

                                      @שואף חסרון אינדקס יכול לשנות את התשובה? חשבתי שזה רק משפר ביצועים.

                                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                      שואףש dovidD 2 תגובות תגובה אחרונה
                                      0
                                      • yossizY yossiz

                                        @שואף חסרון אינדקס יכול לשנות את התשובה? חשבתי שזה רק משפר ביצועים.

                                        שואףש מנותק
                                        שואףש מנותק
                                        שואף
                                        כתב ב נערך לאחרונה על ידי
                                        #20

                                        @yossiz אמר בשאילתא של כניסות חדשות:

                                        @שואף חסרון אינדקס יכול לשנות את התשובה? חשבתי שזה רק משפר ביצועים.

                                        גם אני חשבתי.. בדרך כלל זה רק מחזיר יותר לאט

                                        ליצירת קשר: admin@i-call.me

                                        הידד! גישה למייל גם בלי מחשב ואינטרנט!

                                        תגובה 1 תגובה אחרונה
                                        1
                                        • yossizY yossiz

                                          @שואף חסרון אינדקס יכול לשנות את התשובה? חשבתי שזה רק משפר ביצועים.

                                          dovidD מנותק
                                          dovidD מנותק
                                          dovid
                                          ניהול
                                          כתב ב נערך לאחרונה על ידי
                                          #21

                                          אכן עצם התשובה השונה לא תיתכן בגלל העדר האינדקס.

                                          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                          תגובה 1 תגובה אחרונה
                                          1
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


                                          • 1
                                          • 2
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום