gpt4 book ai didi

mysql - 'posts' 和 'postmeta' WordPress 表的嵌套连接查询

转载 作者:行者123 更新时间:2023-11-29 10:11:57 29 4
gpt4 key购买 nike

我在 posts 表中有一些数据,在 postmeta 中有一些具有不同值的 meta_key,例如:

meta_key = 'phone'
meta_value = 987654321

meta_key = 'score'
meta_value = 40

很明显,对于一个电话号码可以记录多个点。
我想获得一个电话号码的总分及其与帖子的关系。
这个查询看起来很复杂!

我尝试过的与此类似:

SELECT p.*, pm.* from wp_posts AS r    
LEFT JOIN wp_postsmeta AS pm
ON pm.post_id = r.id
WHERE (pm.meta_key = 'score')
LEFT JOIN wp_postsmeta AS p
ON p.post_id = r.id
WHERE p.meta_key = 'phone'

我应该如何实现这个?

最佳答案

正确的语法是:

SELECT p.*, pms.meta_value as score, pmp.meta_value as phone
FROM wp_posts p LEFT JOIN
wp_postsmeta pms
ON pms.post_id = p.id AND pms.meta_key = 'score' LEFT JOIN
wp_postsmeta pmp
ON pmp.post_id = p.id AND pmp.meta_key = 'phone' ;

注释:

  • 表别名应该有意义。 r 对于 wp_posts 没有意义,但 p 有意义。
  • p.* 是一个非常奇怪的选择。我假设您确实想要 posts 表。
  • 您应该为查询返回的值提供合理的名称,例如 scorephone
  • 查询中的 where 子句既放错位置又被误用。这些条件应位于 on 子句中。

编辑:

您修改后的问题似乎表明:

SELECT pmp.meta_value as phone, SUM(pms.meta_value) as score, 
FROM wp_postsmeta pms LEFT JOIN
wp_postsmeta pmp
ON pmp.post_id = pms.post_id AND pmp.meta_key = 'phone' and pms.meta_key = 'score'
GROUP BY phone;

关于mysql - 'posts' 和 'postmeta' WordPress 表的嵌套连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50817596/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com