2016-08-24 77 views
-1

我想构建一个select语句。表格结构如下所示。我基本上希望选择左边表格中的三个字段以及右边表格的meta_values,它们的meta_key为responsible_service和responsible_officer。这些meta_values可能存在也可能不存在。MySQL multple选择第二张表

我可怕的尝试看起来像这样。任何帮助都会很棒。

SELECT 
`wp_posts`.`ID`, 
`wp_posts`.`post_content`, 
`wp_posts`.`post_title` 
FROM(
`wp_posts` 
INNER JOIN `wp_postmeta` ON (`wp_posts`.`ID` = `wp_postmeta`.`post_id`), 
(Select `wp_postmeta`.meta_value where`wp_postmeta`.meta_key='responsible_officer') as Responsible Officer), 
(Select `wp_postmeta`.meta_value where `wp_postmeta`.meta_key='responsible_service') as Responsible Service), 

enter image description here

结果应该是这样的

enter image description here

感谢

+1

编辑你的问题,表明你想要的结果。您的查询不是100%清楚。 –

+0

在ON子句中使用左外连接添加条件 – rocks

+0

您的查询尚未结束。它只是... – Strawberry

回答

1

这会给你每wp_posts 1个或多行。 ID取决于找到多少'responsible_officer'和'responsible_service'。如果没有找到meta_key和meta_value将null

SELECT 
`wp_posts`.`ID`, 
`wp_posts`.`post_content`, 
`wp_posts`.`post_title`, 
max(case `wp_postmeta`.meta_key 
    when 'responsible_officer' then `wp_postmeta`.meta_value end) as responsible_officer, 
max(case `wp_postmeta`.meta_key 
    when 'responsible_service' then `wp_postmeta`.meta_value end) as responsible_service 
FROM 
`wp_posts` 
LEFT JOIN `wp_postmeta` ON `wp_posts`.`ID` = `wp_postmeta`.`post_id` 
         AND `wp_postmeta`.meta_key in ('responsible_officer', 'responsible_service') 

    group by `wp_posts`.`ID`, 
    `wp_posts`.`post_content`, 
    `wp_posts`.`post_title`; 
+0

我已更新图像以显示我希望'responsible_officer'和'responsible_service'被选为独立的实体,这是否有意义? –

+0

@killie是的,有CASE和group by。那么每个ID只有零个或一个负责人员和零个或一个responsible_service? – vercelli

+0

在第9行获取语法错误 –

0

入住这也:

select postmeta.meta_value, posts.ID, posts.`post_content`, 
posts.`post_title` from `wp_posts` posts join `wp_postmeta` postmeta on posts.ID = postmeta.post_id where postmeta.meta_key IN ('responsible_officer', 'responsible_service') 
0
SELECT 
`wp_posts`.`ID`, 
`wp_posts`.`post_content`, 
`wp_posts`.`post_title` 
FROM `wp_posts` 
JOIN `wp_postmeta` ON (`wp_posts`.`ID` = `wp_postmeta`.`post_id`) 
where `wp_postmeta`.meta_key in ('responsible_officer', 'responsible_service') 
+0

请提供您的代码的解释,以便OP可以从中学习。 – EBH