2011-02-28

Force.com : Apex で SOQL 処理 - select



Apex で SOQL 処理 - select



○ 取引先(Account)のレコードを 1 件取得したい

■ Account.Id からレコードを取得する
  1. 取引先に[取引先名:foo]のレコードを追加しておく
  2. 1. で追加したレコードの Account.Id からレコードを取得する
// 1.
Account a = new Account(Name='foo');
try {
    insert a;
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}

// 2.
Account account = [SELECT Id, Name FROM Account WHERE Id = :a.Id];

■ Account.Name からレコードを取得する
  1. 取引先に[取引先名:foo]のレコードを追加しておく
  2. Account.Name = 'foo' からレコードを取得する
// 1.
Account a = new Account(Name='foo');
try {
    insert a
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}

// 2.
Integer cnt = [SELECT COUNT() FROM Account WHERE Name = :a.Name];
if(cnt > 0) {
 Accouont account = [SELECT Id, Name WHERE Name = :a.Name LIMIT 1];
}



○ 取引先(Account)のレコードを複数件取得したい

■ 配列で取得
  1. 取引先に[取引先名:foo][取引先名:boo][取引先名:bar]のレコードを追加しておく
  2. 1. で追加したレコードの Account.Id からレコードを取得する
// 1.
Account[] as = new Account[]{new Account(Name='foo'), new Account(Name='boo'), new Account(Name='bar')};
try {
    insert as;
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}

// 2.
Set<Id> accountIds = new Set<Id>();
for(Account a : as) {
 accountIds.add(a.Id);
}
Account[] accounts = [SELECT Id, Name FROM Account WHERE Id IN :accountIds LIMIT 200];

■ List で取得
  1. 取引先に[取引先名:foo][取引先名:boo][取引先名:bar]のレコードを追加しておく
  2. 1. で追加したレコードの Account.Id からレコードを取得する
// 1.
Account[] as = new Account[]{new Account(Name='foo'), new Account(Name='boo'), new Account(Name='bar')};
try {
    insert as;
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}

// 2.
Set<Id> accountIds = new Set<Id>();
for(Account a : as) {
 accountIds.add(a.Id);
}
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Id IN :accountIds LIMIT 200];

■ Map で取得
  1. 取引先に[取引先名:foo][取引先名:boo][取引先名:bar]のレコードを追加しておく
  2. 1. で追加したレコードの Account.Id からレコードを取得する
// 1.
Account[] as = new Account[]{new Account(Name='foo'), new Account(Name='boo'), new Account(Name='bar')};
try {
    insert as;
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}

// 2.
Set<Id> accountIds = new Set<Id>();
for(Account a : as) {
 accountIds.add(a.Id);
}
Map<Id, Account> accounts = new Map<Id, Account>([SELECT Id, Name FROM Account WHERE Id IN :accountIds LIMIT 200]);




○ 取引先(Account)のレコードを 1 件の取引先名(Name)を取得したい

■ Account.Id からレコードを取得する
  1. 取引先に[取引先名:foo]のレコードを追加しておく
  2. 1. で追加したレコードの Account.Id からレコードの Account.Name を取得する
// 1.
Account a = new Account(Name='foo');
try {
    insert a;
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}

// 2.
String account = [SELECT Id, Name FROM Account WHERE Id = :a.Id].Name;




○ 取引先(Account)のレコードを 200 件以上取得したい

こっち (別記事 :  Force.com : 取引先(Account)のレコードを 200 件以上取得したい)



◇ 環境

  • Salesforce - Developer Edition - API バージョン 20.0



◇ 参考


0 件のコメント:

コメントを投稿