@yossiz כתב בבדיקה על חודש איזה אירועים קיימים בו:
סתם טיפ (אולי כבר עמדת על זה), כדי לענות על השאלה צריך לפצל את השאלה לשני חלקים:
א) מה השאילתא הנכונה
ב) איך לתרגם את זה ל-sqlalchemy
בחיפוש אחרי תשובה לשאלה הראשונה אתה לא אמור לכתוב את המילה sqlalchemy כלל בחיפוש
רק אחרי התשובה לשאלה הראשונה, אם יש עדיין שאלה איך לממש ב-sqlalchemy, אז ניתן לחפש על זה בנפרד
ולעצם השאלה:
בעצם צריך לחפש את האירועים שתאריך הסיום או תאריך ההתחלה נמצאים בתוך החודש הרצוי
דהיינו (פסאודו קוד):
WHERE (start_date BETWEEN תחילת_החודש AND סוף_החודש) OR (end_date BETWEEN תחילת_החודש AND סוף_החודש)
https://www.sqlite.org/lang_expr.html#the_between_operator
אני לא יודע אם יש תמיכה ב-sqlalchemy לאופרטור BETWEEN
, אבל גם אם לא זה זהה לשילוב התנאים של לא פחות מ- ולא יותר מ-
זה יתן לך רשימת אירועים שחופפים את החודש. איך תתרגם את זה לרשימת ימים? לכאורה כבר עדיף בקוד ולא ב-SQL. למה להסתבך...
אני לא יודע אם בכלל תכננת את זה בצורה הכי נכונה, אבל לא הקדשתי לזה מספיק מחשבה
תודה,אכן עמדתי על זה , ובחיפושים לא חיפשתי את sqlalchemy
כתבתי שאני עובד עם sqlalchemy בשביל שיהיה מובן הקטע קוד שאיתו בניתי את הטבלא.
אכן מה שכתבת פותר כמעט כליל את הבעיה. ומביאה לי גם אם מתחיל אירוע בחודש הזה, וגם אם מסתיים אירוע בחודש הזה, אחרי שיש לי את האירוע אני יודע להוציא ממנו את הימים של אותו חודש בלי החודש הלא רלוונטי.
הבעיה מסתבכת כשלמשל חודש 3-4-5 מלא באירוע אחד מתמשך, אני לא יקבל בחודש 4 שום מידע על אירוע, כיוון שהוא לא התחיל בחודש 4 ולא הסתיים בחודש 4
עריכה:
בס״ד לאחר קריאה של הפוסט המחכים לעייל וחשיבה שוב אני חושב שזאת הדרך שצריך לעשות, אני עכשיו בודק, אעדכן.
שאילתא 1
תחילת תור 1 גדול מתחילת תור קיים && סוף תור 1 קטן מסוף תור קיים
שאילתא 2
תחילת תור 1 גדול מתחילת תור קיים אבל קטן מסוף תור קיים
שאילתא 3
סוף תור 1 גדול מתחילת תור קיים אבל קטן מסוף תור קיים
שאילתא 4
תחילת תור 1 קטן מתחילת תור קיים && סוף תור 1 גדול מסוף תור קיים