SELECT a.post_date, a.post_content, a.post_status, b.meta_value AS sales_point FROM bmc_posts AS a INNER JOIN bmc_postmeta AS b ON a.ID = b.post_id WHERE b.meta_key = 'bmc_sale_point'
안녕하세요 오늘 처음 가입 하고 처음 글 써봅니다 ^^
다름이 아니라 조인관련질문인데요 코드를 보시면 b의 meta_key 값이 'bmc_sale_point'인 것을 가져옵니다
근데 저는 bmc_sale_point 말고도 많은 meta_key들이 있습니다 예를들면 .bmc_sale_corp .bmc_sale_store
등 개내들도 같이 가져오게 하고싶은데 이름은 다르게 어떻게 해야되나요?
저위의 구문에서 만들어진것 옆에 bmc_sale_corp가 생기고 bmc_sale_store 가 생겨서 그 값을 가져오고싶습니다
알려주십시요 감사합니다
-- a.post_date, a.post_content, a.post_status 기준으로 -- bmc_sale_point, bmc_sale_corp, bmc_sale_store들은 하나씩만 있다는 전제 SELECT a.post_date, a.post_content, a.post_status , max(decode(b.meta_key,'bmc_sale_point',b.meta_value)) AS sales_point , max(decode(b.meta_key,'bmc_sale_corp',b.meta_value)) AS sale_corp , max(decode(b.meta_key,'bmc_sale_store',b.meta_value)) AS sale_store FROM bmc_posts AS a INNER JOIN bmc_postmeta AS b ON a.ID = b.post_id WHERE b.meta_key IN ('bmc_sale_point','bmc_sale_corp','bmc_sale_store') GROUP BY a.post_date, a.post_content, a.post_status ;
진심으로 거의 80% 해결한것 같습니다 진심 감사드립니다 문제는
max는 필요 없어서 뺏고 mysql이라서 decode 대신 if문을 사용했습니다.
SELECT a.post_date, a.post_content, a.post_status , IF(b.meta_key='bmc_sale_point',b.meta_value,'false') AS sales_point , IF(b.meta_key='bmc_sale_corp',b.meta_value,'false') AS sale_corp , IF(b.meta_key='bmc_sale_store',b.meta_value,'false') AS sale_store FROM bmc_posts AS a INNER JOIN bmc_postmeta AS b ON a.ID = b.post_id WHERE b.meta_key IN ('bmc_sale_point','bmc_sale_corp','bmc_sale_store') GROUP BY a.post_date, a.post_content, a.post_status
이런식으로 바껏고요 문제는 첫번째 두번째 값이 false를 반환 하는것입니다...
그래서 그룹by를 지워봤더니 값이 다 잘 들어갑니다 그니까 합치는 과정에서 false로 합쳐지는것입니다.. 혹시 다른 해결방법이 있나요?
진짜 진심 감사드립니다