相当不便なデータベースしか持ち合わせていません。
テーブルの結合はできない、今時のデータベースというか。
非正規化して使いましょう的なアレである。
そこで今回のテーマGroup byである。
いやいや何がめずらしいんですか?と。
Salesforceでは、やっとこさSpring10でGroup byが実装されたのです。
待ち望みました。
Group byがなければ何が困るのか。
普通に考えて余計なレコードを沢山取得してプログラムで組合せを排除するということをする必要が
あります。
それよりも強烈なのが、Salesforceのガバナ制限など。
10000レコードしかとってこれないとか、1000レコードしかとってこれないとかあるみたいです。
List
WHERE field2 LIKE 'Acme' group by field1];
Group byの実行はこんな感じだ↑。
Min()やMax()、Count()なども使えるぞ。
List
WHERE field3 LIKE 'Acme' group by field1];
問題は使い方だ。
使い方が載ってないんだよ。どこにも。
sObject型の使い方が分からない罠。
Stringのリストにしたい場合、
List
for(sObject c:cList){
//フィールド名でアクセス
sList.add(String.valueOf(c.get('field1')));
}
sObject型のgetの戻り値がObject型なのでキャストしてやる必要がある。
多分Stringなら何でも変換可能だろう・・・
かなり悩んだが、Group byが使えて何よりだった。
OracleやMySQLなら5分で完了なのにorz