我有3张桌子。一个叫用户存储用户名称的用户。另一个存储它的帖子(帖子类型,日期等)。第3个表可以根据帖子的类型存储不同的元键和值。 我想总结每个用户的帖子,例如: 有一个名字,后跟元标记和与他的帖子相关的值。
很难找到一些多连接,但一整天都失败了。
我的表格符合以下链接:http://sqlfiddle.com/#!8/cc7cd/2/0和http://sqlfiddle.com/#!8/cc7cd/3/0
我想要一个返回愚弄结果的查询(示例显示一行,但每个日期可能有一行):
User display name date (meta-key = data_de_inicio_do_servico) date (meta-key = turno ) number of days (count number of instances that each user was found in that meta_key = data_de_inicio_do_servico)
1S BMT LEVI José da Silva Melo 07/05/2014 06:45 às 15:45 1
答案 0 :(得分:0)
只是为了澄清一下,您是否尝试在这三个查询之间创建联合?而不是加入?
例如,
select
wp_posts.ID
, wp_postmeta.meta_key
, wp_postmeta.meta_value
from wp_posts
LEFT JOIN wp_postmeta
ON wp_postmeta.post_id = wp_posts.ID
where
wp_posts.post_type like '%_an' AND
(wp_postmeta.meta_key = 'data_de_inicio_do_servico' OR
wp_postmeta.meta_key = 'turno') AND
wp_postmeta.meta_value not like ''
union all
select
wp_postmeta.post_id as ID,
wp_postmeta.meta_key ,
wp_postmeta.meta_value
from wp_postmeta
where (wp_postmeta.meta_key like '%ATCO%' or wp_postmeta.meta_key like 'operador%')
AND wp_postmeta.meta_value in (select wp_users.display_name from wp_users)
答案 1 :(得分:0)
首先,我可以轻松获得前两个,但为了便于阅读,略微简化了别名。 wp_POSTS表为“p”,第一个后元数据表为“pm1”,第二个为“pm2”。 最后的“pm3”是一点点的努力...我将用户表的“AND IN”更改为左连接...但是如果你只想要那些,那么你可以将它改为JOIN与“users”表关联,因为pm3别名将指示。
这可能与您正在寻找的内容非常接近。
SELECT
p.ID,
pm1.meta_key AS 'Date of duty',
pm1.meta_value AS 'Date',
pm2.meta_key AS 'Turn of duty',
pm2.meta_value AS 'Turn',
pm3.meta_key AS 'Operator',
pm3.meta_value AS 'Name'
from
wp_posts p
LEFT JOIN wp_postmeta pm1
ON p.ID = pm1.post_id
AND pm1.meta_key = 'data_de_inicio_do_servico'
AND pm1.meta_value not like ''
LEFT JOIN wp_postmeta pm2
ON p.ID = pm2.post_id
and pm2.meta_key = 'turno'
AND pm2.meta_value not like ''
LEFT JOIN wp_postmeta pm3
ON p.ID = pm3.post_id
and ( pm3.meta_key like '%ATCO%'
or pm3.meta_key like 'operador%' )
LEFT JOIN wp_users u
ON wp3.meta_value = u.display_name
where
p.post_type like '%_an'
order by
p.post_date DESC
为了帮助优化查询,我会有一个索引 wp_posts表(post_type,post_date,id) wp_postmeta表(post_id,meta_key) wp_users表(display_name)(如果你真的需要保留这个)