アフィリエイト広告を利用しています

広告

posted by fanblog

2018年06月06日

SOQLとSOSLについて

Salesforceの開発で最も使われるクエリが
SOQLでしょう

E.X.

Account[] accList = [SELECT Id, Name FROM Account];

しかし、もう一つクエリがあります。

それがなにでしょうか


はい、それがSOSLです。
今回、この二つのクエリについて
少しずつ解明して行きたいと思います。
間違えたら、ご指導ほどを宜しくです。


SOQLとSOSLの大きい違いは

・SOQL
一度に
1 つの標準またはカスタムオブジェクトしか照会できない

・SOSL
1つの SOSL クエリですべてのオブジェクトを検索できます

もう 1 つの相違点として、

SOSL が単語の一致に基づいて項目を検索する

SOQL はデフォルトで完全一致検索を実行します (ワイルドカードを使用しない場合)。

たとえば、SOSL で「Apple」を検索すると、

項目値が「Apple」や「The Apple is so Big」のレコードが返される

SOQL では項目値が「Apple」のレコードのみが返される


SOQLを使用するケース

SOQL:Salesforce Object Query Language

SOQL は、標準の SQL 言語と似ています、
メインは1つのオブジェクト(テーブル)に対する
参照をすること

しかし、違いもあります。

特に

Account[] accList = [SELECT * FROM Account];

が使えませんよー

SOQLは以下の2種類に分けて使われております。

静的クエリ

E.X.

Account[] accList = [SELECT Id, Name FROM Account];

このようにデータベースへの問い合わせ文書

SELECTのところがそのまま書いて、直接SOQLステートメント

として認識できると私が思っている。

こう書いてもわからないかも。

続けて見て、

動的を見てから、

なんとなく、静的と動的の違いがわかってくると思いますので

このまま、進んでいただけたら、幸いです。

動的クエリ
//まずクエリしたいものを文字列として作成し結合する
String query = 'SELECT Id';
query += ' , Name';
query += ' FROM Account';
query += ' WHERE FlagField = TRUE';
If(something){
    query += ' AND fiedlA = '欲しい条件1'';
}else{
    query += ' AND fiedlA = '欲しい条件2'';
}
//クエリしたい文字列をDatabaseメソッドでSOQLとして発行させる
List<sObject> sobjList = Database.query(query);
if(sobjList != NULL && !sobjList.isEmpty()){
    //なんかの処理
}

SOSLを使用するケース

SOSL:Salesforce Object Search Language

複数のオブジェクト(テーブル)に対する

参照したい時に使われます。

E.X.

FIND {トリガ} IN ALL FIELDS RETURNING Account(Name), Contact(FirstName,LastName,Department)

さらにSOQLのように条件も追加できます。

条件使用E.X.

FIND {トリガ} IN ALL FIELDS RETURNING Account(Name WHERE FlagFieldX = TRUE), Contact(FirstName,LastName,Department)

SOSLもSOQLのように静的と動的に分けて使います。

大体前述のSOQLのようにほぼ一緒ですが

違いがSOQLのクエリ文字列を発行するのは

Database.query()メソッドに対して、

SOSLがsearch.query()メソッドを使って、文字列をSOSL

として発行させるところ

静的SOSL

E.X.

FIND {トリガ} IN ALL FIELDS RETURNING Account(Name WHERE FlagFieldX = TRUE), Contact(FirstName,LastName,Department)
動的SOSL

E.X.

String searchquery='FIND\'Edge*\'IN ALL FIELDS RETURNING Account(id,name),Contact, Lead'; 
List<List<SObject>>searchList=search.query(searchquery);


しかし、

私、これまでのキャリアでは、案件では、

使用した経験がありません!!!
使い方を知っているくらいです。
苦労なんかもありませんので、美味しい技術を共有できかねます。
どなたが経験があり、いいところを教えていただきたいです。

posted by Jude at 08:00 | Comment(0) | 未分類
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

いつもお世話になります。ブログ引越しになったので最新のSFDC情報はこちらへ SFU_CRT_BDG_Pltfrm_App_Blder_RGB.jpg SFU_CRT_BDG_Admin_RGB.jpg
プロフィール
Judeさんの画像
Jude
こんにちは、自由が欲しいJudeっす。最近ネットビジネスを始まった。結婚はしていないが、会社の残業が大嫌い、何しても周りの人に迷惑をかけないように、社会に負の影響を与えないように常に意識してる。残業のない国になるため、できるところでコツコツ貢献しておる。、国民のみんなきっともっと幸せと信じている。
プロフィール
<< 2019年01月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
検索
月別アーカイブ
日別アーカイブ
最新コメント
ファン
×

この広告は30日以上新しい記事の更新がないブログに表示されております。