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

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

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

תנאי בשאילתת postgresql כאשר השדה הוא מסוג json שבתוכו מערך וצריך להתאים איבר עם איבר ממערך חיצוני

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

    תוכן העמודה הוא

    {"in_departments":[6]}
    

    אני צריך תנאי שיחזיר תוצאה חיובית ככל ואיבר (המס' 6) שווה לאיבר כלשהו מתוך מערך חיצוני (שמגיע בפרמטר לשאילתא).

    נגיד שהמערך החיצוני (בשפה php) הוא $departments

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

    תודה.

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

      אני מעיר על השאלה, במקרה שהצגת מדובר באיבר הראשון והאחרון והיחיד.
      אבל כיוון שמערך יכול להכיל עוד ערכים, השאלה אם כוונתך שאיבר 0 == אחד מהרשימה $departments, או איבר אחרון == אחד מהרשימה, או איבר כל שהוא == אחד מהרשימה. ויש עוד אפשרות, שכל האיברים יהיו גם ברשימה $departments, או ששני הרשימות יהיו זהות, ועוד...

      ראה אם זה עוזר לך:
      https://stackoverflow.com/questions/62198038/check-if-postgres-jsonb-contains-one-of-the-values

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      chagoldC תגובה 1 תגובה אחרונה
      1
      • chagoldC מנותק
        chagoldC מנותק
        chagold
        השיב לdovid ב נערך לאחרונה על ידי chagold
        #3

        @dovid התכוונתי לאיבר כלשהו. ערכתי את השאלה.

        בדקתי את המקור שהבאת, ניסיתי את האחרון - יש שגיאה -

        Warning: pg_query(): Query failed: ERROR: operator does not exist: json ?| text[] LINE 2: AND more_data -> 'in_departments' ?| array['appl... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. in /var/www/api/file.php on line 134
        

        אולי זה כי הטייפ אצלי הוא json ולא jsonb?

        תגובה 1 תגובה אחרונה
        0
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          יש מצב לראות את הפקודה בPHP?

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          0
          • chagoldC מנותק
            chagoldC מנותק
            chagold
            כתב ב נערך לאחרונה על ידי chagold
            #5
            $result_prodoct = pg_query($con->con(),"select * from prodocts WHERE '$id_project' = any(prodoct_in_projects) 
                        AND more_data -> 'in_departments' ?| array['1', '2']
                        ORDER BY id ASC;");
            
            תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              כתב ב נערך לאחרונה על ידי dovid
              #6

              הצלחתי ככה:

              $result_prodoct = pg_query($con->con(),"select * from prodocts WHERE '$id_project' = any(prodoct_in_projects) 
                                                      AND more_data::jsonb @> '{"in_departments": [1,2]}'::jsonb
                                                      ORDER BY id ASC;");
              

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              1
              • chagoldC מנותק
                chagoldC מנותק
                chagold
                כתב ב נערך לאחרונה על ידי chagold
                #7

                e2ba881a-a62e-474f-b00a-7e4e3380265e-image.png
                b76e5b73-8d7d-4011-9d1a-302c9ee9045d-image.png

                תגובה 1 תגובה אחרונה
                0
                • dovidD מחובר
                  dovidD מחובר
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #8

                  היה חסר שמה שלושה תווים, עדכנתי את התשובה לפני שעה בערך, תנסה שוב.
                  אגב את המשחקים עשיתי פה:
                  https://sqliteonline.com/
                  עם הקוד הזה:

                  create table tTest (data json);
                  
                  insert into tTest (data) values ('{"in_departments":[6,7]}'::json );
                  
                  SELECT * FROM tTest WHERE data::jsonb @> '{"in_departments": [6]}'::jsonb
                  

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                    תודה רבה. רק הייתי צריך לשבור את הגרשיים.\"in_departments\"

                    אני סקרן לדעת (מעבר למשחקים) איך הגעת לכיוון הזה של הפתרון (אם יש מקור מסויים)

                    1. שלא קראת לin_departments בהצבעה אלא כל האובייקט נכנס לתנאי,
                    2. שהמרת לJSON הכל.
                    תגובה 1 תגובה אחרונה
                    1
                    • dovidD מחובר
                      dovidD מחובר
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @chagold לוידע... אני בכלל לא מכיר את המסד הזה, ביקרתי ב100 דפים, וכל פעם ניסיתי משהו...

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

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

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

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