0

CF では、行が他の行のリストにある QoQ を実行しようとしています。基本的に、一部のコードを cftags から cfscript に移動します (理由は重要ではありません)。タグにはメインクエリがあり、いくつかの重労働を行うネストがいくつかあります。これを cfscript に移動しており、次の構文が機能しています。

var submissionList = new Query(dbtype="query", QoQsrcTable=ARGUMENTS.answers, sql="
SELECT submission_id FROM QoQsrcTable GROUP BY submission_id
").execute().getResult();
var submissions = new Query(dbtype="query", QoQsrcTable=ARGUMENTS.answers, sql="
    SELECT * FROM QoQsrcTable WHERE submission_id IN (#submissionList.submission_id#)
").execute().getResult();

私は次のことを試しましたが、うまくいきません:

var submissions = new Query(dbtype="query", QoQsrcTable=ARGUMENTS.answers, sql="
    SELECT * FROM QoQsrcTable WHERE submission_id IN (SELECT submission_id FROM QoQsrcTable GROUP BY submission_id)
").execute().getResult();

2番目の例がうまくいくはずだと思います。いろいろいじってみました。しかし、私が間違っていることを理解できないようです。ネストされた QoQ はそのようには機能しないかもしれません。コードの 2 つのチャンクなしで、私が試みていることを達成できる別の方法はありますか? より読みやすく、変数を 2 回割り当てる必要がないようにするためです。

4

2 に答える 2

3

QoQはサブクエリをサポートしていません。それは長いことと短いことです。

ドキュメント

于 2012-08-30T08:49:33.957 に答える
0

Coldfusion 10 または Railo 4 では、 Underscore.cfcのgroupBy 関数を利用して、はるかに少ないコードで目的を達成できます。

_ = new Underscore();// instantiate the library    

submissions = _.groupBy(arguments.answers, 'submission_id');

groupBy()キーがグループ要素 (この場合はsubmission_id) の値である構造体を返します。

(免責事項: Underscore.cfc を書きました)

于 2012-08-30T03:19:56.363 に答える