0

サンプルデータがあります

product (ID, name)
         1 | 'iPhone'
         2 | 'iPad'
         3 | 'iWatch'
product_meta (ID, product_id, meta_key, meta_value) 
               1      1         image   iPhone.png       
               2      2         view        123

そしてクエリを使用して:

SELECT p.*, m.*
FROM product AS p
LEFT JOIN product_meta AS m ON m.product_id = p.ID
WHERE p.ID = 1
GROUP BY p.ID 

結果にすべての値を取得する方法は

product(ID, name, image, view) =>  1 | iPhone | iPhone.png | 123
4

3 に答える 3

1

サンプル データが正しくなく、結果を取得しようとしていると仮定すると、次のようにPIVOT使用できます。MAXCASE

select p.id, 
   p.name, 
   max(case when pm.meta_key = 'image' then pm.meta_value end) image,   
   max(case when pm.meta_key = 'view' then pm.meta_value end) view
from product AS p
    left join product_meta AS pm ON pm.product_id = p.ID
where p.ID = 1
group by p.ID 
于 2013-06-09T01:46:18.507 に答える
0

select table1.column1, table2.column2 from ...........残りのクエリのようにすることができます。

于 2013-06-09T01:43:37.783 に答える
0

sgeddes と同じ仮定に基づく:

SELECT p.id, p.name, mimage.meta_value, mview.meta_value
FROM product AS p
LEFT JOIN product_meta AS mimage
    ON mimage.product_id = p.id AND mimage.meta_key = 'image'
LEFT JOIN product_meta AS mview
    ON mview.product_id = p.id AND mview.meta_key = 'view'
WHERE p.id = 1
于 2013-06-09T09:47:25.727 に答える