[英]How to join two tables with multiple IDs from one table used in other table?
[英]join two tables in one with one id and multiple ids in another table
我有一個與content_image
連接的表格content
。 單個content_id
可以有不同的圖像。 根據image_size
,我想用case連接它們。
換句話說,我有一個內容,有3種不同的圖像大小。 但是這些圖像在另一個表中,所以我想只顯示一個內容,在一個輸出中有3個不同的圖像。
無論如何希望代碼在我的解釋中更清楚:
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>
問題是這會產生兩個輸出。 在第一個中,只填充了big
值。 在第二個中,僅填充small
值。 如果我組CFOUTPUT通過content_id
,則它產生一個結果,但再次-只有big
值定義:)不過我想這兩個單個輸出big
和small
定義值。
謝謝大家的幫助!
在一個輸出中僅顯示一個具有3個不同圖像的內容。
如果我理解正確,您嘗試返回具有兩個圖像大小的單個記錄。 要獲得該結果,您必須多次加入圖像表:每個圖像尺寸一次。
再次如上所述 ,如果你想保留OUTER JOIN,那么對這些表的任何過濾都必須在JOIN
完成, 而不是 WHERE
子句,否則你最終會做一個隱式的INNER 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
讓我們從這開始:
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
它看起來不錯,但事實並非如此。 當您在where子句中引用外部聯接表時,它實際上變為內部聯接。 修復是將該過濾器移動到from子句,如下所示:
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 CI ON CI.CONTENT_ID=C.CONTENT_ID
接下來,您可以使用cfoutput標記的group屬性來操作記錄集的顯示。 對於上面的查詢,你會想要這樣的東西。
<cfoutput query="yourquery" group="content_id">
#content_id#
<cfoutput>
#big# #small#
</cfoutput>
</cfoutput>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.