选择缺失的行

时间:2012-01-11 14:54:07

标签: mysql sql database

我目前正在建立一个多语言网站,其中内容首先以英文添加,然后翻译成其他语言。

所有内容都存储在一个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需要被翻译成德语。

任何帮助将不胜感激 谢谢,

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