cfoutputタグを属性 "query"でネストすることはできませんが、それ以外の方法はわかりません

タグで属性 "query"を使用しているときにcfoutputタグをネストできないというエラーが表示されました。私は、これらの2つのcfoutputタグが出力しているクエリを組み合わせることを私に示唆していると推測します。

問題は、最初のcfoutputタグがデータを出力しているMySQLクエリーが、単一の情報をテーブルに出力していることです。「子」cfoutputタグは、いくつかの情報を取得するクエリを使用しています。だから私はこれをどうやってやるのか分からない。

"親" cfoutputタグが出力しているクエリは次のとおりです。

            SELECT DISTINCT s.id            AS  id,
                s.heading           AS  heading,
                s.reasonForSale     AS  reason,
                s.viewing           AS  viewing,
                s.additionalInfo    AS  additional,
                s.contents          AS  content,
                a.id                        AS  auctioneer_id,
                a.name                      AS  auctioneer,
                a.website                   AS  website,
                d.startDate                 AS  start_date,
                d.endDate                   AS  end_date,
                d.startTimeHours            AS  start_hour,
                d.startTimeMins             AS  start_min,
                d.startTimeType             AS  start_time_type,
                d.endTimeHours              AS  end_hour,
                d.endTimeMins               AS  end_min,
                d.endTimeType               AS  end_time_type,
                l.address                   AS  address,
                l.city                      AS  city,
                l.county                    AS  county,
                l.postcode                  AS  postcode,
                t.entryCopy                 AS  sale_type,
                f.filename                  AS  logo_file,
                s.featuredAuction           AS  featured,
                s.sale_of_week              AS  sow,
                s.brochure,
                s.auctioneerslink
        FROM    sales s,
                auctioneers a LEFT JOIN files f ON f.id = a.logoFile,
                saledates d,
                saleloc l,
                lookupcopy t
        WHERE   a.id                    =   s.auctioneer    AND
                d.saleId            =   s.id            AND
                t.id                =   s.saleType      AND
                l.id                =   d.saleLoc       AND
                d.id                =   #tmp_id#
        GROUP BY    id

ここで私の新しいクエリですが、これは情報のいくつかの部分を取得します。物のリストです。それらを印刷するときにループする必要があります。それらは画像ファイル名であり、画像タグなどでラッピングする必要があります...

        SELECT      file_name
    FROM        sales_photos
    WHERE       sale_id = #tmp_id#
    ORDER BY    id

これらの2つのcfoutputタグをネストできない場合、どうすればよいですか?

ありがとう。

0

2 答え

CFOUTPUT でその特定のエラーのみを取得することを忘れないでください。また、 CFLOOP でレコードセットをループすることもできます。実際に値を出力するのではなく、ループしている場合は CFLOOP を使用する方が理にかなっています。レコードセットをループするときの CFLOOP の唯一の欠点は、グループ化属性をサポートしていないことです(この省略はAdobe - http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=83513 - ただしそれは多くの牽引を得ていない)しかし、これはあなたの要件のための問題になるようには聞こえません。

2
追加された

ColdFusionは正しいです。クエリー属性を持つcfoutputを別のcfoutput(クエリー属性付き)内に埋め込むことはできません。

ただし、クエリ出力を開始し、その中で新しいクエリを埋め込み、その結果(既にcfoutputのコンテキスト内にある)にループすることができます。ただし、検索クエリの名前と列のスコープ(およびどの行)を使用するかを指定します。

この回答のために、第1のクエリ(巨大なもの)が "parent"という名前のcfqueryにラップされているとします。


   
   #parent.heading[parent.currentrow]#
     
     #file_name_qry.file_name[i]#
SELECT file_name FROM sales_photos WHERE sale_id = #arguments.id# ORDER BY id

出力内のクエリの名前への参照に注意してください。

また、便宜上、2番目のクエリを関数内にラップしたことにも注意してください。 cfoutput内にcfqueryを自由に挿入することができます。

もちろん、本当の答えは、必要なfile_name属性に結合するようにSQLクエリを書き直してから、グループ属性でクエリを使用するというものですが、この回答は、より複雑であり、さらに高度なSQLの知識と、グループ属性の仕組みを必要とします。

この答えはあなたにとってはうまくいくでしょうが、ColdFusionコミュニティはループ内でループする可能性が非常に高いです - 今のところあなたの問題は解決し、後でグループ属性とより高度なSQL文を調べることができます。

1
追加された
こんにちは、ショーン。私はどちらの回答も理解していません。あなたがしたことを説明するためのケア?ありがとう。
追加された 著者 i-CONICA,
私はあなたの質問を再度読んで、#2は複数レコードの返品では飛行しないので、私はそれを削除しました。私は最初の答えを修正し、メモを追加しました。それ以上の説明が必要な場合は質問してください。
追加された 著者 Shawn Holmes,
#file_name_qry.file_name [i]#
>#file_name_qry.file_name# ...しかし、私はそれがすべてその時点での個人的な好みだと思います。
追加された 著者 Snipe656,