Подсчитайте вхождения значений и верните их в виде пары value_name=›вхождения

У меня есть таблица перевода со столбцом, который неоднократно содержит значения (название языка). Как показано ниже:

id | neutral text | language | translation
---+--------------+----------+------------
 0 |       SUBMIT |       en |      Submit
 1 |       SUBMIT |       cs |     Odeslat
 2 |       SUBMIT |       fr |    Démarrer
 3 |          DAY |       fr |        Jour
 4 |       MONDAY |       fr |       Lundi
 5 |       MONDAY |       cs |     Pondělí

Теперь, как вы можете видеть, я намеренно не заполнил все переводы для ДНЯ и ПОНЕДЕЛЬНИКА. Что мне нужно выяснить с помощью запроса, так это то, какие записи являются неполными. Это означает, что нужно найти ячейки, в которых "нейтральный текст" встречается меньше, чем в других.
Возможно ли в PHP что-нибудь кроме цикла FOR? Загрузка всей таблицы и ее зацикливание делают MySql бесполезным в данный момент.


person Tomáš Zato - Reinstate Monica    schedule 26.08.2013    source источник


Ответы (1)


Вы можете сделать это с помощью агрегации и предложения having:

select neutraltext
from t
group by neutraltext
having count(*) < (select count(*) from t group by neutraltext order by count(*) desc limit 1);
person Gordon Linoff    schedule 26.08.2013
comment
Я только что обнаружил, что для более чем 2 языков невозможно определить, на каком языке отсутствует перевод. Если я делаю запрос к БД, где присутствуют 2 языка, это то, что я получаю. - person Tomáš Zato - Reinstate Monica; 16.09.2014
comment
Другими словами, полученной информации недостаточно. Мне нужно знать, какие переводы отсутствуют. К сожалению, я недостаточно изучил MySQL, чтобы понять это самостоятельно. - person Tomáš Zato - Reinstate Monica; 16.09.2014
comment
@ТомашЗато . . . Если вы хотите знать конкретные языки, я бы посоветовал вам задать еще один вопрос. Будьте предельно конкретны в том, что вам нужно для желаемых результатов. - person Gordon Linoff; 16.09.2014