各イベントが0個以上の「スピーカー」と0個以上の「用語」に関連付けられている可能性がある「イベント」のテーブル、結合テーブルを介してイベントに関連付けられているレコードがある場合、列を持つすべてのイベントのテーブルを作成する必要があります各イベントに関連付けられた「speaker_names」と「term_names」のリストを表す各行。
ただし、クエリを実行すると、speaker_namesとterm_namesの値が重複しています。これは、結合テーブルが各スピーカーとイベントの用語の関連付けごとに行を生成するためです。
1|Soccer|Bobby|Ball
2|Baseball|Bobby - Bobby - Bobby|Ball - Bat - Helmets
3|Football|Bobby - Jane - Bobby - Jane|Ball - Ball - Helmets - Helmets
group_concat集計関数には、重複を削除する'distinct'を使用する機能がありますが、残念ながら、私が本当に必要としているカスタムセパレーターと一緒にそれをサポートしていません。私はこれらの結果を残されています:
1|Soccer|Bobby|Ball
2|Baseball|Bobby|Ball,Bat,Helmets
3|Football|Bobby,Jane|Ball,Helmets
私の質問はこれです:希望の結果を得るためにクエリを作成したり、データ構造を変更したりする方法はありますか?
これは必要なsqlite3クエリであり、Androidデプロイメント用であるため、カスタムC集計関数を追加できないことに注意してください。
考えられる解決策を簡単にテストできるようにする要点を作成しました:https ://gist.github.com/4072840