mysql - Complex SQL Pivot -
so i've got query selecting data 4 tables:
- cases
- taxonomies (containing titles , data taxonomies)
- taxonomy_values (possible values taxonomies)
- post_taxonomy_values (holds ids case table, , ids taxonomy table link two)
i'm attempting select row cases table , taxonomy names , values. here's i've got far:
select cases.title, cases.content, cases.status, taxonomies.title 'taxonomy', taxonomy_values.value 'taxonomy_value' cases, post_taxonomy_values, taxonomies, taxonomy_values cases.slug = 'b-v-dpp' , post_taxonomy_values.post = cases.id , taxonomies.id = post_taxonomy_values.taxonomy , taxonomy_values.id = post_taxonomy_values.value
but generates:
so i'd take taxonomy names , make them column names, , set values part of returned row.
here's structure of tables:
cases:
taxonomies:
taxonomy_values ('taxonomy' references id in taxonomies table):
post_taxonomy_values ('taxonomy' references id in taxonomies table , 'value' references id in taxonomy_values table):
i've written , re-written query can't head round problem, appreciated!
this should trick
select cases.title, cases.content, cases.status, max(case when post_taxonomy_values.post = cases.id , taxonomies.title = 'tags' taxonomies.title else '' end) tags, max(case when post_taxonomy_values.post = cases.id , taxonomies.title = 'tags' taxonomy_values.value.value else '' end) tags_value, max(case when post_taxonomy_values.post = cases.id , taxonomies.title = 'court' taxonomies.title else '' end) court, max(case when post_taxonomy_values.post = cases.id , taxonomies.title = 'court' taxonomy_values.value.value else '' end) court_value, . . . cases, post_taxonomy_values, taxonomies, taxonomy_values cases.slug = 'b-v-dpp' , taxonomies.id = post_taxonomy_values.taxonomy , taxonomy_values.id = post_taxonomy_values.value group cases.title, cases.content, cases.status
Comments
Post a Comment