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

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

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

Sequelize מיון לפי נתוני טבלה אחרת

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

    יש לי טבלה של כרטיסים Tickets, וטבלה של לוגים Log
    כל פעם שמשתמש פותח כרטיס, זה נרשם ללוג.
    אני רוצה לחפש את הכרטיסים שלא פתחו אותם בכלל, או שפתחו הכי קצת, בשאילתה Mysql הייתי כותב כך:

        SELECT *, ( SELECT COUNT(*) FROM Log WHERE Log.TicketId = Tickets.ID ) AS openCount
        FROM Tickets 
        ORDER BY openCount;
    

    השאלה איך אני עושה את זה בSequelize, יש לי ענין מיוחד לעשות את זה דוקא שם בגלל תנאים מורכבים שכבר בנויים בו.
    הכיוון שניסיתי הוא בערך כך:

    TicketsModel.findAll({
            include: [
                {
                    model: Log,
                    as: 'Log',
                    attributes: [
                        [Sequelize.fn('COUNT'), 'openCount']
                    ]
                }
            ],
            order: ['openCount']
        })
    

    אבל זה כמובן לא תקין, לא מצאתי תיעוד איך אפשר לעשות תת שאילתה בתוך השאילתה הראשית.
    האם זה אפשרי?

    dovidD תגובה 1 תגובה אחרונה
    0
    • י יוסף בן שמעון

      יש לי טבלה של כרטיסים Tickets, וטבלה של לוגים Log
      כל פעם שמשתמש פותח כרטיס, זה נרשם ללוג.
      אני רוצה לחפש את הכרטיסים שלא פתחו אותם בכלל, או שפתחו הכי קצת, בשאילתה Mysql הייתי כותב כך:

          SELECT *, ( SELECT COUNT(*) FROM Log WHERE Log.TicketId = Tickets.ID ) AS openCount
          FROM Tickets 
          ORDER BY openCount;
      

      השאלה איך אני עושה את זה בSequelize, יש לי ענין מיוחד לעשות את זה דוקא שם בגלל תנאים מורכבים שכבר בנויים בו.
      הכיוון שניסיתי הוא בערך כך:

      TicketsModel.findAll({
              include: [
                  {
                      model: Log,
                      as: 'Log',
                      attributes: [
                          [Sequelize.fn('COUNT'), 'openCount']
                      ]
                  }
              ],
              order: ['openCount']
          })
      

      אבל זה כמובן לא תקין, לא מצאתי תיעוד איך אפשר לעשות תת שאילתה בתוך השאילתה הראשית.
      האם זה אפשרי?

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

      @יוסף-בן-שמעון
      בשביל לא נפתחו כלל הייתי כותב left join עם where is null.
      אולי זה מקבילה נכונה בsequlize
      https://stackoverflow.com/questions/43122077/left-excluding-join-in-sequelize
      בשביל מיון לפי ספירת הבנים גם לא הייתי עושה תת שאילתה בSQL אלא groupby עם count, אני רואה את זה
      https://stackoverflow.com/a/37817966/1271037
      בשביל לכלול בספירה כאלה עם 0 צריך left join שזה אומר בsequelize להגדיר require לfalse.

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

        @יוסף-בן-שמעון
        בשביל לא נפתחו כלל הייתי כותב left join עם where is null.
        אולי זה מקבילה נכונה בsequlize
        https://stackoverflow.com/questions/43122077/left-excluding-join-in-sequelize
        בשביל מיון לפי ספירת הבנים גם לא הייתי עושה תת שאילתה בSQL אלא groupby עם count, אני רואה את זה
        https://stackoverflow.com/a/37817966/1271037
        בשביל לכלול בספירה כאלה עם 0 צריך left join שזה אומר בsequelize להגדיר require לfalse.

        י
        י
        יוסף בן שמעון
        כתב ב נערך לאחרונה על ידי
        #3

        @dovid תודה!
        רק למען התיעוד לבאים אחרי, יש גם אפשרות לסאב שאילתות בצורה פשוטה:
        https://sequelize.org/master/manual/sub-queries.html

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

        שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

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

        בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

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


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

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

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