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

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

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

SQL | שאילתת JOIN עם מופע אחרון בטבלה שניה

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 4 כותבים 193 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • WWWW מנותק
    WWWW מנותק
    WWW
    השיב לWWW ב נערך לאחרונה על ידי
    #2

    @www עשיתי לפי זה:
    https://stackoverflow.com/questions/3619030/mysql-join-the-most-recent-row-only/3619209#3619209
    בינתיים נראה שזה עובד טוב, השאלה אם יש משהו יותר יעיל.

    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

    clickoneC תגובה 1 תגובה אחרונה
    0
    • clickoneC מנותק
      clickoneC מנותק
      clickone
      השיב לWWW ב נערך לאחרונה על ידי clickone
      #3

      @www לדעתי תלוי כמה רשומות אתה מחזיר.
      ז"א, אם אתה מחזיר רשומה אחת, (נניח אתה רוצה לקבל את הלוג האחרון רק ללקוח ספציפי) אז אין הבדל בכל שיטה שתבחר.
      אם זה מחזיר הרבה תוצאות, הייתי משתמש בLEFT JOIN רגיל, ועושה GROUP BY על התוצאה, ומבקש MAX על השדה של תאריך הלוג.
      אני חושב שזה יותר זריז ויעיל.

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

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

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

      WWWW dovidD 2 תגובות תגובה אחרונה
      4
      • WWWW מנותק
        WWWW מנותק
        WWW
        השיב לclickone ב נערך לאחרונה על ידי WWW
        #4

        @clickone אמר בSQL | שאילתת JOIN עם מופע אחרון בטבלה שניה:

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

        אני מחזיר רשומות בודדות בסוף. 1 - 10

        אם זה מחזיר הרבה תוצאות, הייתי משתמש בLEFT JOIN רגיל, ועושה GROUP BY על התוצאה, ומבקש MAX על השדה של תאריך הלוג.
        אני חושב שזה יותר זריז ויעיל.

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

        הלוג מכיל כרגע 576072 רשומות, בקטנה...

        זה מאד לא נכון מבחינה "חוקית", אבל אם יש לך שיקול של מהירות ייתכן שזה עדיף. (שוב, רק במידה ואתה רואה שיש לך עיכוב מאד גדול - זה קורה בד"כ כשיש ממש טון רשומות)

        אין עיכוב בינתיים.

        WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

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

          @clickone אמר בSQL | שאילתת JOIN עם מופע אחרון בטבלה שניה:

          אם זה מחזיר הרבה תוצאות, הייתי משתמש בLEFT JOIN רגיל, ועושה GROUP BY על התוצאה, ומבקש MAX על השדה של תאריך הלוג.

          זה אכן מה שצריך לעשות, ומה שבstackoverflow הציעו אחרת זה בגלל ששמה התבקשו להגיע לעוד נתונים של השורה הזו מה שלא יתאפשר ע"י MAX.

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          WWWW תגובה 1 תגובה אחרונה
          2
          • WWWW מנותק
            WWWW מנותק
            WWW
            השיב לdovid ב נערך לאחרונה על ידי
            #6

            @dovid אמר בSQL | שאילתת JOIN עם מופע אחרון בטבלה שניה:

            זה אכן מה שצריך לעשות, ומה שבstackoverflow הציעו אחרת זה בגלל ששמה התבקשו להגיע לעוד נתונים של השורה הזו מה שלא יתאפשר ע"י MAX.

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

            WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

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

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

              @www אמר בSQL | שאילתת JOIN עם מופע אחרון בטבלה שניה:

              אתה מתכוון עוד נתונים מהטבלה הראשונה או השנייה?

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

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                הכי טוב זה לבדוק בעצמך את ההבדל, הייתי כותב לך את שני השאילתות אבל אין לי את השמות וגם לא ציינת אם מדובר בMYSQL או MSSQL (משנה טיפה בסינטקס).
                אני מצרף קישורים כדי שתנוח דעתך:
                https://stackoverflow.com/questions/14164784/mysql-using-group-by-vs-subselect-in-columns-list
                https://stackoverflow.com/questions/3156090/which-is-faster-join-with-group-by-or-a-subquery

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                WWWW 2 תגובות תגובה אחרונה
                2
                • WWWW מנותק
                  WWWW מנותק
                  WWW
                  השיב לdovid ב נערך לאחרונה על ידי
                  #9

                  @dovid תודה רבה!
                  מדובר ב MYSQL, ואני מאמין לך אל תדאג, רק חיפשתי הסבר, ושכחתי מהתורה הזאת שSQL זו שפת תוצאות...
                  עכשיו אני מבין, אבדוק את זה.

                  WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                  א תגובה 1 תגובה אחרונה
                  3
                  • WWWW מנותק
                    WWWW מנותק
                    WWW
                    השיב לdovid ב נערך לאחרונה על ידי
                    #10

                    @dovid אתה צודק ובגדול!
                    זה לוקח חצי מהזמן! זה מורגש.

                    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                    תגובה 1 תגובה אחרונה
                    2
                    • א מנותק
                      א מנותק
                      ארכיטקט
                      השיב לWWW ב נערך לאחרונה על ידי
                      #11

                      @www אמר בSQL | שאילתת JOIN עם מופע אחרון בטבלה שניה:

                      שפת תוצאות

                      הנכון: שפה הצהרתית (דקלרטיבית)
                      רוצה לומר: אתה מצהיר שאלו התוצאות שאתה רוצה והוא צריך "לשבור את הראש" איך להביא לך אותם.

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

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

                      תגובה 1 תגובה אחרונה
                      2

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

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

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