我是一個SQL初學者,我有一個sql查詢,回傳我需要的一個表的資訊,這個表ARTICLE_MODE:
| GA_CODEARTICLE | 。C1 | C2 | C3GA_LIBELLE | C5C6 | GA_LIBREART3 | GA_LIBREART5 | 。
|---|---|---|---|---|---|---|
| BUTSS5-RC? | - | 2021年 | SURF
我需要檢索第二個表的一個列的資訊。
表MZS_DPAETAST的列MTMPTVGEN。
在這兩個表中,有兩列包含了一些相同的資訊:
在這兩個表中,有兩列包含了一些相同的資訊。
來自ARTICLE_MODE表的GA_CODEARTICLE列。
表MTMPTVGEN的MZS_ARTICLE列。
| GA_CODEARTICLE | 。MZS_ARTICLE | 。|
|---|---|---|
| BUTSS5-RC? | BUTSS5-RC?
| BUTS85-RC |
| BUTS85-RC? | BUTS85-RC | |
| BUTS85-RC | BUTS75-RC | |
selectMZS_DPAETAST fromMTMPTVGEN LEFT OUTER JOIN ARTICLE_MODE on MZS_ARTICLE=GA_CODEARTICLE
但是我怎樣才能在我的初始查詢中插入它?謝謝你的幫助。
SELECT GA_CODEARTICLE, CC1.CC_LIBELLE AS C1,
YX2.YX_LIBELLE AS C2,
YX3.YX_LIBELLE AS C3,
GA_LIBELLE,
CC4.CC_LIBELLE AS C5,
CC5.CC_LIBELLE AS C6,
CC6.CC_LIBELLE AS C15,
GA_LIBREART3,
GA_LIBREART5
FROM ARTICLE_MODE
LEFT OUTER JOIN PGI_LOOKUP(GCFAMILLENIV1) CC1 ON GA_FAMILLENIV1=CC1. 編碼
AND CC1.CC_TYPE="FN1"
LEFT OUTER JOIN PGI_LOOKUP(GCLIBREART1) YX2 ON GA_LIBREART1=YX2。 編碼
AND YX2.YX_TYPE="LA1"
LEFT OUTER JOIN PGI_LOOKUP(GCLIBREART2) YX3 ON GA_LIBREART2=YX3。 編碼:YX_CODE
AND YX3.YX_TYPE="LA2"
LEFT OUTER JOIN PGI_LOOKUP(GCCOLLECTION) CC4 ONGA_COLLECTION=CC4.CC_CODE
AND CC4.CC_TYPE="GCO"
LEFT OUTER JOIN PGI_LOOKUP(GCFAMILLENIV2) CC5 ON GA_FAMILLENIV2=CC5. CC_CODE
AND CC5.CC_TYPE="FN2"
LEFT OUTER JOIN PGI_LOOKUP(GCFAMILLENIV5) CC6 ON GA2_FAMILLENIV5=CC6。 CC_CODE
AND CC6.CC_TYPE="FN5"
WHERE (GA_EMBALLAGE<>/span>"X"
and (GA_TYPEARTICLE NOT IN ("PRE", "FI", "FRA", "UL", "PAC")
AND ((GA_STATUTART="GEN"))
ORDER BY GA_DATEMODIFDESC
uj5u.com熱心網友回復:
我很難理解你有什么問題。你正在展示你知道如何加入article_mode和mtmptvgen。你有一個包含article_mode的查詢。那么是什么讓你不在那里加入mtmptvgen呢?
你的查詢有許多外部連接。我不知道這些是否真的有必要。我現在對mtmptvgen也不知道。我展示的是一個外連接,但你可以把它變成一個內連接,如果這就足夠了。
SELECT
am.ga_codearticle,
cc1.cc_libelle as c1,
yx2.yx_libelle as c2,
yx3.yx_libelle as c3,
am.ga_libelle,
cc4.cc_libelle as c5,
cc5.cc_libelle as c6,
cc6.cc_libelle as c15,
am.ga_libreart3,
AM.GA_LIBREART5,
m.mzs_dpaetast
FROM article_mode am
LEFT OUTER JOIN pgi_lookup(gcfamilleniv1) cc1 ON am。 ga_familleniv1 = cc1.cc_code AND cc1.cc_type = 'FN1'/span>
LEFT OUTER JOIN pgi_lookup(gclibreart1) yx2 ON am. ga_libreart1 = yx2.yx_code AND yx2.yx_type = 'LA1'/span>
LEFT OUTER JOIN pgi_lookup(gclibreart2) yx3 ON am. ga_libreart2 = yx3.yx_code AND yx3.yx_type = 'LA2'。
LEFT OUTER JOIN pgi_lookup(gccollection) cc4 ON am。 ga_collection = cc4.cc_code AND cc4.cc_type = 'GCO'/span>
LEFT OUTER JOIN pgi_lookup(gcfamilleniv2) cc5 ON am. ga_familleniv2 = cc5.cc_code AND cc5.cc_type = 'FN2'/span>
LEFT OUTER JOIN pgi_lookup(gcfamilleniv5) cc6 ON am。 ga2_familleniv5 = cc6.cc_code AND cc6.cc_type = 'FN5'/span>
LEFT OUTER JOIN mtmptvgen m ON m.mzs_article = am.ga_codearticle
WHERE am.ga_emballage <> 'X'/span>
and am. ga_typearticle NOT IN ('PRE', 'FI'/span>, 'FRA'/span>, 'UL'/span>, 'PAC'/span>)
AND am.ga_statutart = 'GEN')
ORDER BY am.ga_datemodif DESC;
(我已經添加了缺少的列限定詞,并將不合適的雙引號替換為單引號。這些是應該是字串字面,而不是列名,對嗎?我還認為,當所有東西都是大寫字母,并且在運算子、列名和字面意義之間沒有空格時,會使查詢變得難以閱讀。
更新了
。您說每個mzs_dpaetast值只有一個article_mode,但是資料模型是不合適的,它在每個相關的mtmptvgen行中都是多余的存盤。為了處理這個問題,你要在每個article_mode行中只選擇一個mtmptvgen行。這樣做的一個方法是加入一個查詢而不是表:
LEFT OUTER JOIN
(
SELECT mzs_article, MAX(mzs_dpaetast) AS mzs_dpaetast
FROM mtmptvgen
GROUP BY mzs_article
) m ON m.mzs_article = am.ga_codearticle
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/320147.html
標籤:
