Выберите пропущенные строки - PullRequest
2 голосов
/ 11 января 2012

В настоящее время я создаю многоязычный веб-сайт, где контент сначала добавляется на английском языке, а затем переводится на другие языки.

Весь контент хранится в одной таблице 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 ]

8 голосов
/ 11 января 2012
select master
from MyTable
group by master
having count(distinct language) < 3
2 голосов
/ 11 января 2012

Я бы использовал это, чтобы найти контент и переводы, которые все еще необходимы.

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

Надеюсь, это поможет,

Пит

2 голосов
/ 11 января 2012

Если вам нужен не только счет, но и информация, чего вам не хватает, вы можете попробовать

SELECT
  GROUP_CONCAT(language ORDER BY language) as languages_done
FROM tablename
GROUP BY master
HAVING languages_done<>'de,en,es'
0 голосов
/ 11 января 2012
  • Поиск всех используемых языков.
  • Поиск всех используемых основных документов.
  • Создание списка всех основных документов на всех языках.
  • Удалить список документов, которые уже переведены (МИНУС или ИСКЛЮЧИТЬ в зависимости от платформы)

    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
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...