1

contentと結合されたテーブルがありますcontent_image。1 つの に対して異なるイメージが存在する場合がありますcontent_id。によると、ケースで結合したいimage_size

つまり、3 つの異なる画像サイズを持つ 1 つのコンテンツがあります。しかし、これらの画像は別のテーブルにあるため、1 つの出力で 3 つの異なる画像を含む 1 つのコンテンツのみを表示したいと考えています。

とにかく、私の説明でコードがより明確になることを願っています:

    SELECT C.CHAPTER_ID,CH.CHAPTER,C.CONTENT_ID,
           C.CONT_HEAD AS NAME,
           SMALL=(CASE WHEN CI.IMAGE_SIZE=0 THEN CONTIMAGE_SMALL END),
           BIG=(CASE WHEN CI.IMAGE_SIZE=2 THEN CONTIMAGE_SMALL END),
           C.UPDATE_DATE,
           C.RECORD_DATE
    FROM   CONTENT C
               LEFT OUTER JOIN CONTENT_CHAPTER CH ON C.CHAPTER_ID = CH.CHAPTER_ID
               LEFT OUTER JOIN CONTENT_IMAGE CI ON CI.CONTENT_ID=C.CONTENT_ID
    WHERE  CH.CONTENTCAT_ID = 14
    ORDER BY C.UPDATE_DATE DESC,C.RECORD_DATE DESC

および出力コード:

    <cfoutput query="get_images">
        <a class="highslide" target="_blank" onclick="return hs.expand(this, { slideshowGroup: 1 } )" href="/documents/content/#big#"><img src="/documents/content/#small#" title="#name#" border="0" /></a>
    </cfoutput>

問題は、これが 2 つの出力を生成することです。最初のものでは、big値のみが取り込まれます。2 番目のものでは、small値のみが入力されます。cfoutput をグループ化content_idすると、単一の結果が生成されますが、big値のみが定義されています:)しかし、と値の両方が定義された単一の出力が必要です。bigsmall

助けてくれてありがとう!

4

2 に答える 2

2

1 つの出力で 3 つの異なる画像を含む 1 つのコンテンツのみを表示します。

私の理解が正しければ、両方の画像サイズを持つ単一のレコードを返そうとしています。その結果を得るには、イメージ テーブルに複数回 JOIN する必要があります。イメージ サイズごとに 1 回です。

ダンが上記で述べたように、OUTER JOIN を保持したい場合、これらのテーブルのフィルタリングは句ではなく内で行う必要があります。そうしないと、代わりに暗黙的に実行することになります。JOINWHEREINNER JOIN

 SELECT C.CHAPTER_ID
       , CH.CHAPTER
       , C.CONTENT_ID
       , C.UPDATE_DATE
       , C.RECORD_DATE
       , C.CONT_HEAD AS NAME
       , CIS.CONTIMAGE_SMALL AS SMALLImage
       , CIB.CONTIMAGE_SMALL AS BIGImage
 FROM CONTENT C
         LEFT OUTER JOIN CONTENT_CHAPTER CH 
             ON C.CHAPTER_ID = CH.CHAPTER_ID AND CH.CONTENTCAT_ID = 14
         LEFT OUTER JOIN CONTENT_IMAGE CIS 
             ON CIS.CONTENT_ID = C.CONTENT_ID AND CIS.IMAGE_SIZE = 0
         LEFT OUTER JOIN CONTENT_IMAGE CIB 
             ON CIB.CONTENT_ID = C.CONTENT_ID AND CIB.IMAGE_SIZE = 2
ORDER BY C.UPDATE_DATE DESC,C.RECORD_DATE DESC
于 2013-10-07T18:04:33.560 に答える