0

ここにいる誰かが Tasker Android アプリを知っているかどうかはわかりませんが、ほとんどの一般的な言語で書かれている「生の」SQL コードについて基本的に話すので、誰もが私が達成しようとしていることをグローバルに理解できると思います.

まず、これは私が欲しいものです。

IF (SELECT * FROM ("january") WHERE ("day") = (19)) MATCHES [%records(#) = 1] END

ELSE

SELECT * FROM ("january") WHERE ("day") = (19)  ORDER BY ("timea") DESC END

上記で言いたいことは次のとおりです。コードの最初の部分 (IF ... END) で、「day」列の数字 19 に一致する結果レコードの数が 1 つだけの場合、ここで実行を終了します。ただし、複数のレコードが見つかった場合は、ELSE の後に次の部分にジャンプします。

もしあなたがTaskerのユーザーなら、次の(私の現在の)セットアップを理解するでしょう:

A1: SQL Query [ Mode:Raw File:Tasker/Resources/Calendar Express/calendar_db Table:january Columns:day Query:SELECT * FROM ("january") WHERE ("day") = (19) Selection Parameters: Order By: Output Column Divider: Variable Array:%records Use Root:Off ] 
A2: SQL Query [ Mode:Raw File:Tasker/Resources/Calendar Express/calendar_db Table:january Columns:day Query:SELECT * FROM ("january") WHERE ("day") = (19)  ORDER BY ("timea") DESC Selection Parameters: Order By: Output Column Divider: Variable Array:%records Use Root:Off ] If [ %records(#) > 1 ]
An:...

したがって、ご覧のとおり、A1 は例外なく常に実行され、変数配列 '%records()' で結果を取得します (% は、Tasker が変数を識別する方法であり、他の言語では $ です。また、括弧ではなく括弧を使用します)。 )。次に、配列内のエントリ数が 1 つだけの場合、A2 がジャンプされ (%records(#) > 1 の場合)、次のアクションが実行されます。

ただし、A1 の実行後に %records() 配列に 3 が含まれている場合、以前に設定された %records() 配列の内容を上書きして A2 アクションが実行されます。ただし、今回は同じ数のレコード (3) が含まれますが、並べ替えられます。

たった1行のコードでそれを行うことは可能ですか? ありがとう ;)

4

1 に答える 1