פונקציה שממזגת 2 משפטי SQL ל join אחד
-
שלום לכולם
אני רוצה לבנות פונקציה שתדע לקחת 2 משפטי SQL שכל אחד מהם נכתב בנפרד, ולעשות בהם join. היא תקבל את 2 המשפטים, ואת השדות שעליהם רוצים לעשות join וכמובן גם אם זה left join וכו', כמובן שיש סיכוי ש 2 המשפטים הללו כבר מגיעים עם Join משלהם, וזה גם צריך להיות מכוסה. בסופו של דבר הפונקציה צריכה לפלוט משפט SQL אחד מוכן עם join כפי שביקשו ממנו. אין לי שום בעיה להוסיף כינויים "בכוח" לטבלאות על מנת לאבטח שלא תהיינה כפילויות.באופן עקרוני בתיכנון פונקציה כזו אני רואה לנגד עיני 3 שלבים עיקריים:
פירוק הפסוקיות (SELECT WHERE וכדומה)
שילוב הפסוקיות (כאשר יש לנו בשאילהת הראשונה select id ובשניה select firstname יש להרכיב עכשיו select id,firstname וכן בפסוקית where וכדומה)
הרכבת המשפט מחדש מכל הפסוקיות שנוצרו כולל פסוקית join באמצע.מה אתם אומרים? האם כדאי להיכנס לפינה האיומה הזאת של הרכבת משפטי SQL? זאת בעצם עבודה שאנטיטי פריימוורק עושה לבד, הוא מומחה בלקחת ליטרלים ולהפוך אותם לסטרינג של SQL.
הפונקציה הזו, אם תעבוד היא תעזור לי להפחית מורכבות רבה בקוד שלי, ולטפל בכל סיפור בנפרד.
תודה מראש לכולם, כל המלצה תתקבל בברכה.
פורסם במקור בפורום CODE613 ב12/06/2015 17:30 (+03:00)
-
האמת שהרעיון יכול להיות מאוד פשוט, לעטוף את 2 המשפטים בסוגריים ולעשות select * על שניהם עם join באמצע כזה:
select * from (select id , fullname from Contacts) as t1 join (select ContactID , CommunicationData from ContactsCommunicationsData) t2 on t1.ID=t2.ContactID
אם אין כאן פגיעה בביצועים (שהוא מריץ קודם את 2 הטבלאות ואז עושה join, זה יכול להיות נחמד לא?
פורסם במקור בפורום CODE613 ב12/06/2015 18:12 (+03:00)