我目前正在建立一个多语言网站,其中内容首先以英文添加,然后翻译成其他语言。
所有内容都存储在一个MySQL表中,如下所示:
id | language | title | master 1 | en | Page one title | 1 2 | es | Página un título | 1 3 | de | Seite einen titel | 1 4 | en | Page two title | 2 5 | es | Página dos título | 2
我需要做的是能够获得仍需要翻译的所有内容的列表。在上面的例子中,#4需要被翻译成德语。
任何帮助将不胜感激 谢谢,
答案 0 :(得分:8)
select master
from MyTable
group by master
having count(distinct language) < 3
答案 1 :(得分:2)
如果你不仅想要计数,还要想知道你想要尝试的信息
SELECT
GROUP_CONCAT(language ORDER BY language) as languages_done
FROM tablename
GROUP BY master
HAVING languages_done<>'de,en,es'
答案 2 :(得分:2)
我会用它来查找仍然需要的内容和翻译。
SELECT master
, Languages.language
FROM MyTable
LEFT JOIN (
SELECT DISTINCT language
FROM master
) AS Languages
ON master.language = Languages.language
WHERE master.language IS NULL
希望这有帮助,
皮特
答案 3 :(得分:0)
删除已翻译的文档列表(MINUS或EXCEPT,具体取决于平台)
WITH languages AS (SELECT DISTINCT language FROM mytable),
masters AS (SELECT DISTINCT master FROM mytable)
SELECT m.master, l.language
FROM masters m, languages l
MINUS
SELECT m.master, m.language
FROM mytable m