0

所以我有一个从 4 个表中选择数据的查询:

  • 案例
  • 分类法(包含有关分类法的标题和数据)
  • taxonomy_values(分类的可能值)
  • post_taxonomy_values(保存案例表中的 ID 和分类表中的 ID 以链接两者)

我试图从案例表中选择一行,然后获取所有分类名称及其值。这是我到目前为止所得到的:

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):

taxonomy_values 表

post_taxonomy_values('taxonomy' 引用分类表中的 ID,'value' 引用 taxonomy_values 表中的 ID):

post_taxonomy_values 表

我已经编写并重新编写了这个查询,但我无法解决这个问题,任何帮助将不胜感激!

4

1 回答 1

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
于 2012-07-07T14:44:59.977 回答