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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
51 פוסטים 5 כותבים 394 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צדיק תמיםצ צדיק תמים

    @eido אם אין לך אפשרות לעמודת ARRAY ממש, עדיף עם טבלה נפרדת כדי שתוכל לעשות אינדקסים

    E מנותק
    E מנותק
    eido
    כתב נערך לאחרונה על ידי
    #42

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

    צדיק תמיםצ תגובה 1 תגובה אחרונה
    0
    • E eido

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

      צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      כתב נערך לאחרונה על ידי
      #43

      @eido נראה לי שכתבתי כבר את כל ההסברים, זה נהיה דיון מעגלי.

      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
      טיפים

      תגובה 1 תגובה אחרונה
      0
      • E מנותק
        E מנותק
        eido
        כתב נערך לאחרונה על ידי eido
        #44

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

        אולי חסרה לי הבנה ברעיון מאחורי ההצעה שלך.

        צדיק תמיםצ תגובה 1 תגובה אחרונה
        0
        • E eido

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

          אולי חסרה לי הבנה ברעיון מאחורי ההצעה שלך.

          צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          כתב נערך לאחרונה על ידי צדיק תמים
          #45

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

          @eido כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

          חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות

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

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          E תגובה 1 תגובה אחרונה
          2
          • צדיק תמיםצ צדיק תמים

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

            @eido כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

            חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות

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

            E מנותק
            E מנותק
            eido
            כתב נערך לאחרונה על ידי
            #46

            @צדיק-תמים כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

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

            @eido כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

            חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות

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

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

            צדיק תמיםצ תגובה 1 תגובה אחרונה
            2
            • E eido

              @צדיק-תמים כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

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

              @eido כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

              חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות

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

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

              צדיק תמיםצ מנותק
              צדיק תמיםצ מנותק
              צדיק תמים
              כתב נערך לאחרונה על ידי
              #47

              @eido כן, זה עקרון חשוב מאוד שחוסך הרבה באגים וסרבול

              Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
              טיפים

              תגובה 1 תגובה אחרונה
              1
              • E מנותק
                E מנותק
                eido
                כתב נערך לאחרונה על ידי
                #48

                טוב, אז זה הקוד החדש:
                מציאת מודעות:

                $sqlNew = "SELECT a.*
                FROM appartments a
                WHERE $where
                  AND a.created_at >= ?
                  AND NOT EXISTS (
                        SELECT 1
                        FROM apartment_reads ar
                        WHERE ar.apartment_id = a.id
                          AND ar.phone = ?
                  )
                ORDER BY a.created_at DESC";
                
                $sqlOld = "SELECT a.*
                FROM appartments a
                WHERE $where
                  AND (
                        a.created_at < ?
                        OR EXISTS (
                            SELECT 1
                            FROM apartment_reads ar
                            WHERE ar.apartment_id = a.id
                              AND ar.phone = ?
                        )
                      )
                ORDER BY a.created_at DESC";
                

                סימון כנקראה:

                 $sql = "INSERT INTO apartment_reads (apartment_id, phone)
                    VALUES (?, ?)";
                

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

                FOREIGN KEY (apartment_id) REFERENCES appartments(id) ON DELETE CASCADE
                

                ),
                וכשאני מוסיף או מוחק סינון אני לא צריך לבצע שום פעולה.

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

                  אתה יכול לשלוף בבת אחת או באותו ביטוי את שני הסוגים:

                  $sqlAll = "SELECT a.*,
                  IF(a.created_at < ? OR apartment_reads.id IS NULL, 1, 0) AS is_new
                  FROM appartments a
                  LEFT JOIN apartment_reads ON apartment_reads.apartment_id = a.id
                  WHERE $where
                  ORDER BY a.created_at DESC";
                  

                  השדה is_new אומר אם זה מודעה שנקרא או ישנה.
                  אולי זה לא שימושי עבורך, מציע למקרה שאתה שולף את שני הסוגים במכה.

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

                    אתה יכול לשלוף בבת אחת או באותו ביטוי את שני הסוגים:

                    $sqlAll = "SELECT a.*,
                    IF(a.created_at < ? OR apartment_reads.id IS NULL, 1, 0) AS is_new
                    FROM appartments a
                    LEFT JOIN apartment_reads ON apartment_reads.apartment_id = a.id
                    WHERE $where
                    ORDER BY a.created_at DESC";
                    

                    השדה is_new אומר אם זה מודעה שנקרא או ישנה.
                    אולי זה לא שימושי עבורך, מציע למקרה שאתה שולף את שני הסוגים במכה.

                    E מנותק
                    E מנותק
                    eido
                    כתב נערך לאחרונה על ידי
                    #50

                    @dovid אני שולף את שניהם אחד אחרי השני, לא אכפת לי שיהיה במכה אחת, אבל איך משתמשים בזה? איך אני רואה אם זה חדש או ישן?

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

                      אתה יכול לשלוף בבת אחת או באותו ביטוי את שני הסוגים:

                      $sqlAll = "SELECT a.*,
                      IF(a.created_at < ? OR apartment_reads.id IS NULL, 1, 0) AS is_new
                      FROM appartments a
                      LEFT JOIN apartment_reads ON apartment_reads.apartment_id = a.id
                      WHERE $where
                      ORDER BY a.created_at DESC";
                      

                      השדה is_new אומר אם זה מודעה שנקרא או ישנה.
                      אולי זה לא שימושי עבורך, מציע למקרה שאתה שולף את שני הסוגים במכה.

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

                      כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

                      השדה is_new אומר אם זה מודעה שנקרא או ישנה.

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


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

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

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