2013-06-09 3 views
0

У меня есть образец данныхКак получить все значение в php mysql в ID?

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 
+2

Если ваши образцы данных имеют product_id = 1 для обеих записей в product_meta? Если нет, то как iPhone с product_id 1 относится к представлению 123? – sgeddes

ответ

1

Предполагая, что ваши данные выборки неправильно и вы пытаетесь PIVOT ваших результатов, вы можете использовать MAX с CASE для этого:

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 
0

вы можете сделать, как выберите table1.column1, таблица2 .column2 из .......... остальная часть запроса.

+0

, если вы используете wordpress, не изобретайте колесо, используйте прямой запрос wwp, http://codex.wordpress.org/Class_Reference/WP_Query – user2380555

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 
Смежные вопросы