|
| query () |
|
| query (const query &r) |
|
virtual | ~query () |
|
template<class T > |
query & | and_ (const _TCHAR *name, const _TCHAR *qlogic, T value) |
|
query & | andIsNotNull (const _TCHAR *name) |
|
query & | andIsNull (const _TCHAR *name) |
|
template<class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 > |
query & | in (const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7) |
|
template<class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 > |
query & | in (const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6) |
|
template<class T0 , class T1 , class T2 , class T3 , class T4 , class T5 > |
query & | in (const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5) |
|
template<class T0 , class T1 , class T2 , class T3 , class T4 > |
query & | in (const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4) |
|
template<class T0 , class T1 , class T2 , class T3 > |
query & | in (const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3) |
|
template<class T0 , class T1 , class T2 > |
query & | in (const T0 kv0, const T1 kv1, const T2 kv2) |
|
template<class T0 , class T1 > |
query & | in (const T0 kv0, const T1 kv1) |
|
template<class T0 > |
query & | in (const T0 kv0) |
|
template<class T > |
query & | or_ (const _TCHAR *name, const _TCHAR *qlogic, T value) |
|
query & | orIsNotNull (const _TCHAR *name) |
|
query & | orIsNull (const _TCHAR *name) |
|
query & | reset () |
|
query & | segmentsForInValue (int v) |
|
query & | select (const _TCHAR *name, const _TCHAR *name1=NULL, const _TCHAR *name2=NULL, const _TCHAR *name3=NULL, const _TCHAR *name4=NULL, const _TCHAR *name5=NULL, const _TCHAR *name6=NULL, const _TCHAR *name7=NULL, const _TCHAR *name8=NULL, const _TCHAR *name9=NULL, const _TCHAR *name10=NULL) |
|
template<class T > |
query & | where (const _TCHAR *name, const _TCHAR *qlogic, T value) |
|
query & | whereIsNotNull (const _TCHAR *name) |
|
query & | whereIsNull (const _TCHAR *name) |
|
| queryBase () |
|
| queryBase (const queryBase &r) |
|
virtual | ~queryBase () |
|
void | addField (const _TCHAR *name) |
|
void | addLogic (const _TCHAR *name, const _TCHAR *logic, const _TCHAR *value) |
|
void | addLogic (const _TCHAR *combine, const _TCHAR *name, const _TCHAR *logic, const _TCHAR *value) |
|
void | addSeekBookmark (bookmark_td &bm, ushort_td len, bool reset=false) |
|
void | addSeekKeyValue (const _TCHAR *value, bool reset=false) |
|
void | addSeekKeyValuePtr (const void *value, ushort_td len, short typeStr, bool reset=false) |
|
queryBase & | all () |
|
queryBase & | bookmarkAlso (bool v) |
|
void | clearSeekKeyValues () |
|
void | clearSelectFields () |
|
queryBase & | direction (table::eFindType v) |
|
table::eFindType | getDirection () const |
|
int | getJoinKeySize () const |
|
int | getLimit () const |
|
eOptimize | getOptimize () const |
|
int | getReject () const |
|
const _TCHAR * | getSelect (short index) const |
|
const _TCHAR * | getWhereToken (short index) const |
|
bool | isAll () const |
|
bool | isBookmarkAlso () const |
|
bool | isSeekByBookmarks () const |
|
bool | isStopAtLimit () const |
|
queryBase & | joinKeySize (int v) |
|
queryBase & | limit (int v) |
|
queryBase & | operator= (const queryBase &r) |
|
queryBase & | optimize (eOptimize v) |
|
queryBase & | queryString (const _TCHAR *str, bool autoEscape=false) |
|
queryBase & | reject (int v) |
|
void | release () |
|
void | reserveSeekKeyValuePtrSize (size_t v) |
|
void | reserveSeekKeyValueSize (size_t v) |
|
void | reset () |
|
void | reverseAliasName (const _TCHAR *alias, const _TCHAR *src) |
|
short | selectCount () const |
|
void | setWhereToken (short index, const _TCHAR *v) |
|
queryBase & | stopAtLimit (bool v) |
|
const _TCHAR * | toString () const |
|
short | whereTokens () const |
|
読み取り用クエリー
SQLライクなクエリーを、メソッドチェーンを使ってわかりやすく指定できます。
TransactdのクエリーはSQLと似ていますが、論理式の評価は異なっています。式の評価は以下の通りです。
論理式は1組のフィールド名・演算子・値で構成します。 論理式の評価は左から右に向かって順次行われます。演算の順序を決めるかっこ()は使用できません。 また、以下のロジックでマッチ、アンマッチが決定されます。
- 1 現在の条件にマッチし、次がorの場合trueを返します。
- 2 現在の条件にマッチし、次がandの場合処理を継続します。
- 3 現在の条件にマッチし、次がない場合trueを返します。
- 4 現在の条件にマッチせず、次がandの場合falseを返します。
- 5 現在の条件にマッチせず、次がorの場合処理を継続します。
- 6 現在の条件にマッチせず、次がない場合falseを返します。
つぎのようなパターンの論理式は1回の検索では抽出できないことに注意してください。 レコード検索において、このような場合、複数回検索を行うか、共通条件で検索を行ったあと、個別のフィルタリングを行うようにします。
例1 (a or b) and (c or d) 最初の (a or b)のaがマッチすると条件1によりtrueが返され (c or d)であるかが評価されません。
例2 (a and b) or (c and d) 最初の (a and b)のaがアンマッチであると条件4によりfalseが返され (c and d)であるかが評価されません。
次のような論理式は良くあるパターンです。 最初に共通条件をandで接続します。最後に、候補をorで接続します。
date >= 2000-01-01 and date <= 2013-01-01 and group = 1 or group = 3 or group = 7
これは以下の式と等価です。
(date >= 2000-01-01 and date <= 2013-01-01) and (group = 1 or group = 3 or group = 7)
このような論理式は1回のオペレーションで検索できます。