2

ジョブリストのテーブルと、ジョブリストIDと各フィールド値を「フィールドタイトル」->「フィールド値」の形式で含む関連テーブルがあります。

したがって、ジョブのリストを取得するために、SQLクエリでテーブルを結合しましたが、そのために複数行で結果を取得しています。説明させてください。

クエリは次のようなものです。

SELECT list.id, list.activation_date, list_field.value 
  FROM listings AS list
 INNER JOIN listings_fields AS list_field ON list.id = list_field.id
 WHERE list.activation_date > SOME VALUE
   AND list_field.field_id IN ('Title', 'Category')
 ORDER BY list.activation_date DESC, list_field.field_id DESC

結果は次のようになります。

51325   2012-07-31  Job Title 1
51325   2012-07-31  Category 1, Category 2
51324   2012-07-31  Job Title 2
51324   2012-07-31  Category 3
51323   2012-07-31  Job Title 3
51323   2012-07-31  Category 1, Category 3

必要なすべてのデータがあり、タイトルが最初でカテゴリが2番目と一貫して順序付けられていますが、結果をすべて1行で取得する方法を考えることはできません。これはよく知られているトリックの一般的な問題であるに違いありません。申し訳ありませんが、まだわかりません。

まだ学んでいます。誰か助けていただければ幸いです。:-)

4

1 に答える 1

1

何かのようなもの

SELECT list.id, list.activation_date, list_fieldJ.value,list_fieldC.value
 FROM listings AS list
 INNER JOIN listings_fields AS list_fieldJ ON list.id = list_fieldJ.id 
    and List_fieldj = 'Title'
 INNER JOIN listings_fields AS list_fieldC ON list.id = list_fieldC.id 
    and List_fieldC = 'Category'

 WHERE list.activation_date > SOME VALUE
 ORDER BY list.activation_date DESC

基本的に、タイトルのために一度参加し、次にカテゴリーのためにもう一度参加します。言うまでもなく、取得する値の型が少ない場合は苦痛です。そして、上記は、ジョブが常にタイトルとカテゴリを持っていることを前提としています。外部結合が必要なオプションのもの。

于 2012-07-31T21:06:36.880 に答える