所以我有一个查询从4个表中选择数据:
我正在尝试从案例表中选择一行,然后获取所有分类名称及其值。这是我到目前为止所得到的:
select
cases.title, cases.content, cases.status, taxonomies.title as 'taxonomy', taxonomy_values.value as 'taxonomy_value'
from cases, post_taxonomy_values, taxonomies, taxonomy_values
where
cases.slug = 'b-v-dpp' and
post_taxonomy_values.post = cases.id and
taxonomies.id = post_taxonomy_values.taxonomy and
taxonomy_values.id = post_taxonomy_values.value
但这就是产生的:
所以基本上我想要的是获取分类法名称并使它们成为列名,并将它们的值设置为返回行的一部分。
这是表格的结构:
例:
分类
taxonomy_values ('taxonomy'引用分类表中的ID):
post_taxonomy_values ('taxonomy'引用分类法表中的ID,'value'引用taxonomy_values表中的ID):
我已经编写并重写了这个查询,但我无法理解这个问题,我们将非常感谢任何帮助!
答案 0 :(得分:0)
这应该可以解决问题
select
cases.title, cases.content, cases.status,
max(case when post_taxonomy_values.post = cases.id and taxonomies.title = 'Tags' then taxonomies.title else '' end) as Tags,
max(case when post_taxonomy_values.post = cases.id and taxonomies.title = 'Tags' then taxonomy_values.value.value else '' end) as Tags_value,
max(case when post_taxonomy_values.post = cases.id and taxonomies.title = 'Court' then taxonomies.title else '' end) as Court,
max(case when post_taxonomy_values.post = cases.id and taxonomies.title = 'Court' then taxonomy_values.value.value else '' end) as Court_value,
.
.
.
from cases, post_taxonomy_values, taxonomies, taxonomy_values
where
cases.slug = 'b-v-dpp' and
taxonomies.id = post_taxonomy_values.taxonomy and
taxonomy_values.id = post_taxonomy_values.value
group by cases.title, cases.content, cases.status