Регистрация  |  Вход

SOQL : Known usecase for 'FROM' UNQUALIFIEDNAME ('AS' ? UNQUALIFIEDNAME)? ('USING' UNQUALIFIEDNAME)? (PARENT_ALIAS_EXPR)*

Насчет последней части - (PARENT_ALIAS_EXPR)*, все понятно.

Для объявления aliases :

public class TestAliases1 {

/** use aliases in SOQL
*
* элемент языка SOQL.
* Служит для того, чтобы к таблице в пределах данного SOQL-запроса
* можно было обращаться по другому имени.
* Обычно применяется:
* а) в целях повышения читаемости запросов
* б) в целях многократного использования одной и той же таблицы в одном запросе.
*/
Integer count = [SELECT count() FROM Contact c, c.Account a WHERE a.name = 'MyriadPubs'];


}

Что же касаемо AS - USING . Может кто сталкивался с их применением в FROM? Зачем он нужен?

Насчет последней части -  (PARENT_ALIAS_EXPR)*, все понятно.

Для объявления aliases :

[code]public class TestAliases1 {

        /** use aliases in SOQL
         *
         * элемент языка SOQL.
         * Служит для того, чтобы к таблице в пределах данного SOQL-запроса 
         * можно было обращаться по другому   имени.
         * Обычно применяется:
         * а) в целях повышения читаемости запросов
         * б) в целях многократного использования одной и той же таблицы в одном запросе.
         */
        Integer count = [SELECT count() FROM Contact c, c.Account a WHERE a.name = 'MyriadPubs'];


}[/code]

Что же касаемо AS - USING . Может кто сталкивался с их применением в FROM? Зачем он нужен?

Документация знает все:
http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_using_scope.htm#kanchor36

[USING SCOPE filterScope]

Select a.Name 
From Account as a
Limit 1

Документация знает все:
http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_using_scope.htm#kanchor36

[code]
[USING SCOPE filterScope]
[/code]

[code]
Select a.Name 
From Account as a
Limit 1
[/code]

Спасибо, я не так силен в SQL/SOQL как в Java, сухая запись в доке мне мало помогает

Gres
[USING SCOPE filterScope]

Можете привести примеры запросов? Желательно с базовыми sObjects.


И чем отличается

Gres
Select a.Name
From Account as a
Limit 1

от просто

/* define alias inside query */
{
Account result = [SELECT a.Name
FROM Account a];
}

Спасибо, я не так силен в SQL/SOQL как в Java, сухая запись в доке мне мало помогает :)

[quote="Gres"][USING SCOPE filterScope][/quote] 

Можете привести примеры запросов? Желательно с базовыми sObjects.


И чем отличается  

[quote="Gres"]Select a.Name
From Account as a
Limit 1[/quote]

от просто

[code]    

    /* define alias inside query */
    {
       Account result = [SELECT a.Name
         				 FROM Account a];
    }
[/code]

А в чем тут ошибка? Пример брал из документации:

пишет unexpected token: Owner

/* WHERE with IN */
Account acc16 = [SELECT Name FROM Account
WHERE CreatedById IN (SELECT
TYPEOF Owner
WHEN User THEN Id
WHEN Group THEN CreatedById
END
FROM CASE)];

А в чем тут ошибка? Пример брал из документации:

пишет unexpected token: Owner

[code]
    /* WHERE with IN */
    Account acc16 = [SELECT Name FROM Account
                      WHERE CreatedById IN (SELECT 
                                             TYPEOF Owner
                                               WHEN User THEN Id
                                               WHEN Group THEN CreatedById
                                             END
                                            FROM CASE)];[/code]

Michael
TYPEOF Owner
WHEN User THEN Id
WHEN Group THEN CreatedById
END

только вчера напоролся на то, что в OwnerId (о котором можно подумать что это лук-ап на Юзеров) сидит вовсе на Юзерский АйДи.

к таким полям нужен свой подход...
надо бы почитать об этом подробнее

[quote="Michael"]  [code]  TYPEOF Owner
                     WHEN User THEN Id
                     WHEN Group THEN CreatedById
                     END[/code]
[/quote]

только вчера напоролся на то, что в OwnerId (о котором можно подумать что это лук-ап на Юзеров) сидит вовсе на Юзерский АйДи.

к таким полям нужен свой подход...
надо бы почитать об этом подробнее

Den Brown
только вчера напоролся на то, что в OwnerId (о котором можно подумать что это лук-ап на Юзеров) сидит вовсе на Юзерский АйДи.

А можно поподробней? Еще не встречал такого.

[quote="Den Brown"]только вчера напоролся на то, что в OwnerId (о котором можно подумать что это лук-ап на Юзеров) сидит вовсе на Юзерский АйДи.[/quote]
А можно поподробней? Еще не встречал такого.

Вот http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_typeof.htm Подробнее не бывает Штука интересная, но пока не доводилось использовать. Это когда одно поле lookup может указывать на разные типы объектов. Пока это только фишка пары стандартных полей из стандартных объектов.

Вот http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_typeof.htm Подробнее не бывает :) Штука интересная, но пока не доводилось использовать. Это когда одно поле lookup может указывать на разные типы объектов. Пока это только фишка пары стандартных полей из стандартных объектов.

Dmitry Shnyrev
Пока это только фишка пары стандартных полей из стандартных объектов.

Да я в курсе, и конечно читал эту документацию.
Синтаксически запрос который я привел выше - вроде правильный.

И пример кода который я привел - взят из документации. Но компилятор салесфорс выдает непонятную мне ошибку , и я не понимаю как я должен реагировать на это.

Пока что я считаю что эта ошибка семантическая , а не синтаксическая. Поскольку похоже, что TYPEOF редко кто пользуется - отложим решение на потом.

[quote="Dmitry Shnyrev"]Пока это только фишка пары стандартных полей из стандартных объектов.[/quote]

Да я в курсе, и конечно читал эту документацию. 
Синтаксически запрос который я привел выше - вроде правильный. 

И пример кода который я привел - взят из документации. Но компилятор салесфорс выдает непонятную мне ошибку , и я не понимаю как я должен реагировать на это.

Пока что я считаю что эта ошибка семантическая , а не синтаксическая. Поскольку похоже, что TYPEOF редко кто пользуется - отложим решение на потом.