Sequelize מיון לפי נתוני טבלה אחרת
-
יש לי טבלה של כרטיסים 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'] })אבל זה כמובן לא תקין, לא מצאתי תיעוד איך אפשר לעשות תת שאילתה בתוך השאילתה הראשית.
האם זה אפשרי? -
יש לי טבלה של כרטיסים 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'] })אבל זה כמובן לא תקין, לא מצאתי תיעוד איך אפשר לעשות תת שאילתה בתוך השאילתה הראשית.
האם זה אפשרי?@יוסף-בן-שמעון
בשביל לא נפתחו כלל הייתי כותב 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. -
@יוסף-בן-שמעון
בשביל לא נפתחו כלל הייתי כותב 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 תודה!
רק למען התיעוד לבאים אחרי, יש גם אפשרות לסאב שאילתות בצורה פשוטה:
https://sequelize.org/master/manual/sub-queries.html
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות