Индивидуальный заказ по + Группировка по - PullRequest
1 голос
/ 29 марта 2011

Итак, у меня есть руководство в этой таблице:

id  lang    header_name        text         
1   uk       Youth Development  It's very important
2   dk       tst                hejsa   
3   uk       tst                hello sir

И я хочу сделать запрос, который выбирает все ручные записи для данного языка (в данном случае - датский). Если по какой-то причине не все 100% оригинальных ручных записей (британских) были переведены, я хочу вместо этого получить английскую запись. Это возможно даже в таких форматах таблиц, как этот?

Полагаю, это было бы что-то с "group by header_name" какого-то рода, но не уверен.

Ответы [ 4 ]

1 голос
/ 29 марта 2011

Это может помочь, но не оптимизировано:

SELECT *
FROM the_table
WHERE lang = 'dk'

UNION

SELECT *
FROM the_table
WHERE lang <> 'dk' AND header_name NOT IN (
    SELECT header_name
    FROM the_table
    WHERE lang = 'dk'
)
1 голос
/ 29 марта 2011

Попробуйте, у меня нет SQL, и, следовательно, это не проверено. Таблицы t1, t2, t3 ссылаются на одну и ту же таблицу и используют псевдоним для их различения;

select * from t3  
where t3.lang IN ('DK','UK')  
and t3.ID NOT IN  
(select t1.id  
FROM t1,t2  
where t1.header_name = t2.header_name  
AND t2.lang = 'DK'  
AND t1.lang = 'UK'  
)  

По существу, сначала вам нужнонайдите идентификатор с переводом, а затем исключите его.

0 голосов
/ 29 марта 2011

Как я понимаю, вы хотите получить контент на английском языке, если контент на датском языке отсутствует? .. Возможно, вы захотите добавить столбец в вашу таблицу, где вы отметите свои записи. (Не знаете, если ваш столбец "header_name" делает это эффективно для вас, я думаю, что это также будет переведено? ..

В любом случае, столбец с именем "entry_id", где "tst dk" и "tst uk" будут иметь идентификатор "2", например, вам следует при загрузке вручную запросить "entry_id" и сначала найти запись dk, и если ее там нет, загрузите запись uk.

0 голосов
/ 29 марта 2011

Я не могу комментировать, но все, что я хочу спросить, это: В приведенном выше примере строки с Id 2 и ID 3 - это одни и те же записи только на другом языке?и создайте две таблицы

Example
id
sort
(all other generic columns)

example_translations
id
example_id
language_id
header_name
text

Тогда, если запросить перевод примера на датский язык с идентификатором 1, он вернет строку example_translations этой сущности.если он ничего не возвращает, вы можете запросить английскую версию.

Я не думаю, что возможно сделать что-то подобное на уровне Mysql

...