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

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

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

פונקציה שממזגת 2 משפטי SQL ל join אחד

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

    שלום לכולם
    אני רוצה לבנות פונקציה שתדע לקחת 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)

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

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

      האמת שהרעיון יכול להיות מאוד פשוט, לעטוף את 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)

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

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

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

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

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