我有3代表爲初級講座:如何查詢表,以獲取其鏈路記錄中沒有任何記錄,並有過濾記錄,以及
translation_token ----------------- id token default_value -- ------ ------------- 1 token_1 Token 1 2 token_2 Token 2 3 token_3 Token 3 translation_token_value ----------------------- id token_id language_id value -- -------- ----------- ----- 1 1 1 Token 1 english 2 1 2 Token 1 dutch 3 2 1 Token 2 english application_module ------------------ id name -- ---- 1 project 2 location LI_translation_token_application_module --------------------------------------- id token_id application_module_id -- -------- --------------------- 1 1 1 2 2 2
我已經translation_token表,如果有翻譯適用於特定的語言,然後它條目將存在於translation_token_value表中,否則default_translation將被取回爲令牌並且不爲null。
此外,這些令牌既可用於特定模塊,也可用於所有模塊。如果這些令牌用於模塊,那麼LI_translation_token_application_module表中將存在鏈接,否則不會有任何條目。
獲取記錄時,我總是有模塊和language_id用於過濾器,以便我可以獲取特定模塊和語言的翻譯以及一般翻譯,即適用於所有模塊的令牌。
到目前爲止,我嘗試了下面的查詢,但沒有得到成功。我沒有獲得在translation_token_value中沒有翻譯的標記,因此對於此標記default_translation將是可見的。
SELECT translation_token.token, ttv.value,
CASE WHEN ttv.value = NULL THEN translation_token.default_translation
ELSE ttv.value
END
FROM translation_token
LEFT OUTER JOIN translation_token_value AS ttv ON ttv.token_id = translation_token.id
LEFT OUTER JOIN LI_translation_token_application_module AS token_app_mod ON token_app_mod.token_id = ttv.token_id
LEFT JOIN application_module
ON application_module.id = token_app_mod.application_module_id
WHERE (application_module.name IN('project') OR application_module.name IS NULL)
AND (language_id = 2 OR language_id is null)
你也需要改變'WHEN ttv.value = NULL'到'WHEN ttv.value IS NULL' – Alex
心中已經編輯查找我的錯誤查詢感謝@Alex –
@EidMorsy感謝。但是這只是解決了在LI表中不存在令牌的問題。如果任何語言的translation_token_value表中沒有令牌記錄,則此查詢仍然不起作用。 – Kammy