2014-02-24 1 views
0

내 검색어로 필요한 모든 정보를 얻을 수 있지만 내 인생에서 원하는 방식으로 행을 구성 할 수는 없습니다. 정보는 분명이 다른 테이블에서 유래 한 구성은 그래서 내가 구성되지 원하는 일하기 쉬운 얻을과 같이 패션 :MySQL 쿼리에서 별개의 행을 더 잘 얻는 방법은 무엇입니까?

post_id | meta_key | meta_value 
--------|----------|----------- 
1  | key_one | value1 
1  | key_two | value2 
2  | key_one | value3 
2  | key_two | value4 

내가 원하는 경우 :

post_id | key_one | key_two 
--------|----------|----------- 
1  | value1 | value2 
2  | value3 | value4 

이것은 쿼리이며 반환 값은 그보다 작습니다. 다시 말하지만, 올바른 정보가 있지만 행 전체에 흩어져 있습니다. 나는 여기에

SELECT DISTINCT wp_postmeta.post_id, 
CASE WHEN wp_postmeta.meta_key = 'allowed' THEN wp_postmeta.meta_value END allowed, 
CASE WHEN wp_postmeta.meta_key = 'amenities' THEN wp_postmeta.meta_value END amenities, 
CASE WHEN wp_postmeta.meta_key = 'trail-type' THEN wp_postmeta.meta_value END trailtype, 
CASE WHEN wp_postmeta.meta_key = 'weatherlat' THEN wp_postmeta.meta_value END weatherlat, 
CASE WHEN wp_postmeta.meta_key = 'weatherlon' THEN wp_postmeta.meta_value END weatherlon 
from wp_postmeta WHERE wp_postmeta.post_id IN (SELECT object_id AS id FROM wp_term_relationships WHERE term_taxonomy_id = 74) 

응답, 그리고 그 아래, 내가

post_id | allowed | amenities | trailtype | weatherlat | weatherlon 
--------|---------|-----------|-----------|------------|----------- 
503  | 1,2,3 | NULL  | NULL  | NULL  | NULL 
503  | NULL | No-Water | NULL  | NULL  | NULL 
503  | NULL | NULL  | Easy  | NULL  | NULL 
503  | NULL | NULL  | NULL  | NULL  | NULL 
503  | NULL | NULL  | NULL  | 47.37070 | NULL 
503  | NULL | NULL  | NULL  | NULL  | -122.00633 
566  | 5,6,7 | NULL  | NULL  | NULL  | NULL 
566  | NULL | Restrooms | NULL  | NULL  | NULL 
566  | NULL | NULL  | Moderate | NULL  | NULL 
566  | NULL | NULL  | NULL  | NULL  | NULL 
566  | NULL | NULL  | NULL  | 47.729212 | NULL 
566  | NULL | NULL  | NULL  | NULL  | -117.142829 

을 얻기 위해 노력하고있어 ... 난 그냥 문 거리에있어 알고 그리고

post_id | allowed | amenities | trailtype | weatherlat | weatherlon 
--------|---------|-----------|-----------|------------|----------- 
503  | 1,2,3 | No-Water | Easy  | 47.37070 | -122.00633 
566  | 5,6,7 | Restrooms | Moderate | 47.729212 | -117.142829 
을 원하는

답변

1

group by 및 각 열의 집계 함수를 사용하도록 쿼리를 수정하십시오.

SELECT wp_postmeta.post_id, 
     max(CASE WHEN wp_postmeta.meta_key = 'allowed' THEN wp_postmeta.meta_value END) as allowed, 
     max(CASE WHEN wp_postmeta.meta_key = 'amenities' THEN wp_postmeta.meta_value END) as amenities, 
     max(CASE WHEN wp_postmeta.meta_key = 'trail-type' THEN wp_postmeta.meta_value END) as trailtype, 
     max(CASE WHEN wp_postmeta.meta_key = 'weatherlat' THEN wp_postmeta.meta_value END) as weatherlat, 
     max(CASE WHEN wp_postmeta.meta_key = 'weatherlon' THEN wp_postmeta.meta_value END) as weatherlon 
from wp_postmeta 
where wp_postmeta.post_id IN (SELECT object_id AS id 
           FROM wp_term_relationships 
           WHERE term_taxonomy_id = 74 
          ) 
group by wp_postmeta.post_id; 
+0

너무 많은 승리! 감사!!! 내가 아는 한 무언가가 사라졌다! –

관련 문제