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

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

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

כמה שורות לכמה שדות - SQL

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

    אני רוצה להשיג כמה שדות מכמה שורות באותה טבלה לחיבור אחד

    בינתיים עשיתי כך (האם זה הדך היחידה או שיש דרך נקייה יותר?)

    SELECT
    item.order_item_id,
    item.order_id,
    metaitem_product_id.meta_value as product_id,
    product_post.post_title as product_name,
    metaitem_qty.meta_value as qty,
    metaitem_total_price.meta_value as total_price,
    metaitem_total_price.meta_value / metaitem_qty.meta_value as unit_price,
    order_post.post_date as order_date
    
    FROM
    
    wp_woocommerce_order_items as item
    
    LEFT JOIN wp_woocommerce_order_itemmeta as metaitem_product_id
    ON item.order_item_id = metaitem_product_id.order_item_id
    
    LEFT JOIN wp_woocommerce_order_itemmeta as metaitem_qty
    ON item.order_item_id = metaitem_qty.order_item_id
    
    LEFT JOIN wp_woocommerce_order_itemmeta as metaitem_total_price
    ON item.order_item_id = metaitem_total_price.order_item_id
    
    LEFT JOIN wp_posts as product_post
    ON metaitem_product_id.meta_value = product_post.ID
    
    LEFT JOIN wp_posts as order_post
    ON order_post.ID = item.order_id
    
    WHERE
    item.order_item_type = 'line_item'
    AND metaitem_product_id.meta_key = '_product_id'
    AND metaitem_qty.meta_key = '_qty'
    AND metaitem_total_price.meta_key = '_line_total'
    

    שאלתי השניה היא איך אוכל להחזיר שדה ריק עם הwhere לא נמצאה באחד הjoin?

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

      @ש-ב-ח יש בצעם שני חלקים בשאילתה שלך,
      טבלת אב (item) והרבה טבלאות משנה לפי קשרים לטבלת האב (למעט אחד)
      כעת בתנאים יש לך גם שני סוגי תנאים,
      א) תאנים לאיזה שורות אתה רוצה בעצם, א) תנאים שהם בעצם בירור הJOIN, כלומר "תעשה JOIN עם הטבלה X רק אם"

      כעת אתה שואל איך אתה מפעיל את הסוג השני בלי לסנן מטבלת האב.
      יש שני דרכים:
      א. JOIN מרובה תנאים, כלומר תכתוב:

      ON metaitem_product_id.meta_value = product_post.ID AND metaitem_product_id.meta_key = '_product_id'
      

      ב. לעשות תת שאילתות, כלומר טבלאות הבנים בעצם יהיו שאילתות שכוללות את הwhere מוקפות סוגריים, ותתייחס לזה כטבלה ועל זה הJOIN

      אפשר בתת שאילתה לאגד כמה טבלאות ביחד עם תנאים, ואז לאחד אותם עם טבלת הitem.

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

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

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

        @dovid
        השאלה עם אני יכול לקחת את ההטבלה wp_woocommerce_order_itemmeta
        ככה:

        SELECT 
        meta_key,
        meta_value
        
        FROM
        wp_woocommerce_order_itemmeta
        
        WHERE
        wp_woocommerce_order_itemmeta.order_item_id = wp_woocommerce_order_item.order_item_id
        AND wp_woocommerce_order_itemmeta.meta_key IN('_product_id', '_qty', '_line_total')
        
        

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

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

        אני כמעט בטוח שקיים כזה דבר (אולי זה נקרה טבלת ציר - pivot)
        אבל לא יודע איך להתחיל ולא הצלחתי להבין ממרחבי הרשת.... אך אני מכניס כזו שאילתה בתוך שאילתה וכו'....

        אשמח להארותיך ועזרתך..

        dovidD ח 2 תגובות תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לש.ב.ח. ב נערך לאחרונה על ידי
          #4

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

          SELECT
          item.order_item_id,
          item.order_id,
          metaitem_product_id.meta_value as product_id,
          product_post.post_title as product_name,
          metaitem_qty.meta_value as qty,
          metaitem_total_price.meta_value as total_price,
          metaitem_total_price.meta_value / metaitem_qty.meta_value as unit_price,
          order_post.post_date as order_date
          
          FROM wp_woocommerce_order_items as item
           
          LEFT JOIN wp_woocommerce_order_itemmeta as metaitem_product_id ON item.order_item_id = metaitem_product_id.order_item_id AND metaitem_product_id.meta_key = '_product_id'
          LEFT JOIN wp_woocommerce_order_itemmeta as metaitem_qty ON item.order_item_id = metaitem_qty.order_item_id AND metaitem_qty.meta_key = '_qty'
          LEFT JOIN wp_woocommerce_order_itemmeta as metaitem_total_price ON item.order_item_id = metaitem_total_price.order_item_id AND metaitem_total_price.meta_key = '_line_total'
          
          LEFT JOIN wp_posts as product_post ON metaitem_product_id.meta_value = product_post.ID
          LEFT JOIN wp_posts as order_post ON order_post.ID = item.order_id
          WHERE item.order_item_type = 'line_item'
          
          

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

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

          תגובה 1 תגובה אחרונה
          1
          • ח מנותק
            ח מנותק
            חוקר
            השיב לש.ב.ח. ב נערך לאחרונה על ידי
            #5

            @ש-ב-ח אמר בכמה שורות לכמה שדות - SQL:

            אני כמעט בטוח שקיים כזה דבר (אולי זה נקרה טבלת ציר - pivot)

            איזה SQL מדובר?
            MSSQL או MYSQL?
            כי בMSSQL זה נראה לי קיים.
            אבל ב MYSQL זה לא קיים.
            אך יש דרכים לבצע זאת פרימטיבי

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

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

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

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