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

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

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

שאלה ב SQL

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 3 כותבים 190 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מנצפךמ
    מנצפךמ
    מנצפך
    כתב ב נערך לאחרונה על ידי
    #1
    DROP TABLE IF EXISTS tmp;
    DROP TABLE IF EXISTS tmp2;
    
    CREATE TABLE tmp(
    	id BIGINT
    );
    
    CREATE TABLE tmp2(
    	id BIGINT
    );
    
    INSERT INTO tmp2 VALUES (10);
    INSERT INTO tmp2 VALUES (10);
    
    INSERT INTO tmp
    SELECT id from tmp2
    WHERE tmp2.id NOT IN (SELECT id from tmp); 
    

    חשבתי שהתוצאה של זה תהיה להוסיף ל tmp רק רשומה אחת ("10")
    כי נעשית בדיקה בשורה 17 (השורה האחרונה) שהערך לא קיים ב tmp

    מה שיוצא זה שהבדיקה נעשית לפני ההכנסה של הרשומה.

    השאלה איך עושים שכן תהיה בדיקה

    dovidD תגובה 1 תגובה אחרונה
    0
    • מנצפךמ מנצפך
      DROP TABLE IF EXISTS tmp;
      DROP TABLE IF EXISTS tmp2;
      
      CREATE TABLE tmp(
      	id BIGINT
      );
      
      CREATE TABLE tmp2(
      	id BIGINT
      );
      
      INSERT INTO tmp2 VALUES (10);
      INSERT INTO tmp2 VALUES (10);
      
      INSERT INTO tmp
      SELECT id from tmp2
      WHERE tmp2.id NOT IN (SELECT id from tmp); 
      

      חשבתי שהתוצאה של זה תהיה להוסיף ל tmp רק רשומה אחת ("10")
      כי נעשית בדיקה בשורה 17 (השורה האחרונה) שהערך לא קיים ב tmp

      מה שיוצא זה שהבדיקה נעשית לפני ההכנסה של הרשומה.

      השאלה איך עושים שכן תהיה בדיקה

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

      @מנצפך לא הבנתי מה רצית.
      יש בשני הטבלאות שורה בודדת של id = 10.
      כעת אתה בוחר את כל השורות בtmp2 שהid שלהם לא קיים בtmp. התוצאה כמובן אפס רשומות.
      מה לא טוב בהתנהגות הזאת? מה אתה כן רוצה?

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

        תפסתי מיד אחרי הפרסום את הבעיה שלי.

        בכל אופן, מה שאני רוצה זה שבכל שורה ייבדק התנאי מחדש.
        ברור במבנה הזה של השאילתה שזה לא קורה.
        כי קודם נאספות כל השורות שמתאימות לתנאי ואז הן נוספות לטבלה הריקה.

        אני רוצה שבכל שורה תתבצע בדיקה מול הטבלה הריקה.

        יש לי שאילתה הרבה יותר מורכבת, שניסיתי להביא את החלק הרלוונטי ממנה

        dovidD תגובה 1 תגובה אחרונה
        0
        • מנצפךמ מנצפך

          תפסתי מיד אחרי הפרסום את הבעיה שלי.

          בכל אופן, מה שאני רוצה זה שבכל שורה ייבדק התנאי מחדש.
          ברור במבנה הזה של השאילתה שזה לא קורה.
          כי קודם נאספות כל השורות שמתאימות לתנאי ואז הן נוספות לטבלה הריקה.

          אני רוצה שבכל שורה תתבצע בדיקה מול הטבלה הריקה.

          יש לי שאילתה הרבה יותר מורכבת, שניסיתי להביא את החלק הרלוונטי ממנה

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

          @מנצפך צריך לעשות לולאה בשביל להגיע למה שאתה רוצה אבל קשה לי להבין את המשמעות.
          ההבדל בין לבדוק פעם אחת עבור כל השורות לבין לבדוק פר שורה הוא אם קורית הכנסה ע"י גורם זר באמצע ההכנסה. אני חושב שזה לא קורה כי יש נעילה.

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

            @מנצפך צריך לעשות לולאה בשביל להגיע למה שאתה רוצה אבל קשה לי להבין את המשמעות.
            ההבדל בין לבדוק פעם אחת עבור כל השורות לבין לבדוק פר שורה הוא אם קורית הכנסה ע"י גורם זר באמצע ההכנסה. אני חושב שזה לא קורה כי יש נעילה.

            clickoneC
            clickoneC
            clickone
            כתב ב נערך לאחרונה על ידי
            #5

            @dovid
            לדעתי DISTINCT יעזור כאן שלא יהיו כפילויות וממילא תהיה רק שורה אחת בכל פעם
            כמובן שאם תוך כדי נכנסו רשומות מבחוץ זה לא יעזור

            INSERT INTO tmp
            SELECT DISTINCT  id from tmp2
            WHERE tmp2.id NOT IN (SELECT id from tmp); 
            

            אין טסט כמו פרודקשן.

            המייל שלי urivpn@gmail.com

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

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

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

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

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


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

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

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