0

だから私は4つのテーブルからデータを選択するクエリを持っています:

  • ケース
  • タクソノミ (タクソノミに関するタイトルとデータを含む)
  • taxonomy_values (タクソノミーの可能な値)
  • post_taxonomy_values (ケース テーブルの ID と分類テーブルの ID を保持して 2 つをリンクします)

ケース テーブルから行を選択して、すべての分類名とその値を取得しようとしています。ここに私がこれまでに持っているものがあります:

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' は 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 に答える