2016-02-05 23 views
0

我對mysql非常陌生。我有兩張桌子。基於mysql上的映射表的列名

表1:product_details

manufacturerID| sku | image1     | image2     | image3 
-------------------------------------------------------------------------------------------------- 
    123  | 1 | image1-sku1-filename.jpg | image2-sku1-filename.jpg | image3-sku1-filename.jpg  
    123  | 2 | image1-sku2-filename.jpg | image2-sku2-filename.jpg | image3-sku2-filename.jpg  
    123  | 3 | image1-sku3-filename.jpg | image2-sku3-filename.jpg | image3-sku3-filename.jpg 
    456  | 10 | image1-sku10-filename.jpg| image2-sku10-filename.jpg| image3-sku10-filename.jpg 
    456  | 20 | image1-sku20-filename.jpg| image2-sku20-filename.jpg| image3-sku20-filename.jpg 

表2:image_mapping

manufacturerID | image_column | image_type 
------------------------------------------- 
    123  | image3  | master 
    123  | image1  | extra 
    123  | image2  | extra 
    456  | image3  | master 

我需要其的所有產品(SKU)映射與產品圖像SELECT查詢(將替換圖像表2中的列名稱)每個製造商ID和每個SKU。

表3:product_images

manufacturerID | sku | product_image   | image_type 
-------------------------------------------------------------- 
    123  | 1 | image3-sku1-filename.jpg | master 
    123  | 1 | image1-sku1-filename.jpg | extra 
    123  | 1 | image2-sku1-filename.jpg | extra 
    123  | 2 | image3-sku2-filename.jpg | master 
    123  | 2 | image1-sku2-filename.jpg | extra 
    123  | 2 | image2-sku2-filename.jpg | extra 
    123  | 3 | image3-sku3-filename.jpg | master 
    123  | 3 | image1-sku3-filename.jpg | extra 
    123  | 3 | image2-sku3-filename.jpg | extra 
    456  | 10 | image3-sku10-filename.jpg| master  
    456  | 20 | image3-sku20-filename.jpg| master 

回答

0

我下面的作品與您的數據:

SELECT pd.manufacturerID, sku, 
     CASE WHEN im.image_column = 'image1' THEN pd.image1 
      WHEN im.image_column = 'image2' THEN pd.image2 
      WHEN im.image_column = 'image3' THEN pd.image3 
      END AS prod_image, im.image_type 
FROM product_details pd 
JOIN image_mapping im 
ON pd.manufacturerID = im.manufacturerID; 

SQLFiddle:http://sqlfiddle.com/#!9/76fc1/3/0

+0

**十分感謝Stidgeon **這完美地工作! –