Group-By
如何對行進行分組
我不明白如何根據某些先決條件從下表中檢索結果。
我有 2 張桌子
表“項目”
| 編號 | 類別 ID | count_view | -- | ------------| ---------- | 1 | 1 | 100 | 2 | 2 | 50 | 3 | 3 | 60
表“翻譯項目”
| 編號 | 項目 ID | 姓名 | 語言程式碼 | -- | -----------| ----------| --------- | 1 | 1 | 一些名字1| zh | 2 | 1 | 一些名字2| 汝 | 3 | 2 | 一些名字3| zh | 4 | 3 | some name4| ru
結果
我想檢索以下範例中的結果。一個條件是,如果存在預設語言的翻譯,則檢索該語言的名稱,否則檢索任何其他語言。
對於“en”頁面
| 項目 ID | 姓名 | 語言程式碼 | -----------| ----------| --------- | 1 | 一些名字1| zh | 2 | 一些名字3| zh | 3 | some name4| ru
對於“ru”頁面
| 項目 ID | 姓名 | 語言程式碼 | -----------| ----------| --------- † 1 | 一些名字2| 和 | 2 | 一些名字3| zh | 3 | some name4| ru
有沒有可能實現我想要的?
我嘗試使用
case
並group
使用以下語句:“en”頁面範例
選擇 p.id、t.project_name、t.lang_code、p.count_view 來自項目 p LEFT JOIN Translation_Projects t ON t.project_id = p.id 和 lang_code = ( 案子 當 t.lang_code = "en" THEN "en" 其他“茹” 結尾 )
我正在使用 SQLite。
SET @lang := 'en'; -- or 'ru', dependent by the language you need SELECT p.id, COALESCE(t1.name,t2.name) name, COALESCE(t1.lang_code,t2.lang_code) lang_code FROM Projects p LEFT JOIN Translation_Projects t1 ON t1.project_id = p.id AND t1.lang_code = @lang LEFT JOIN Translation_Projects t2 ON t2.project_id = p.id AND t2.lang_code != @lang
PS。您可以將
@lang
變數替換為查詢文本中所需的文字,當然,有 2 個靜態查詢、動態 SQL 或帶參數的查詢。聚苯乙烯。假設永遠不會有第三種語言……