Спасибо только создал вопрос и тут же сам на него ответил примерно так же)))))
а если усложнить и допустим у нас где-то остуствуют какие то переводы в принципе на пример у сущьности 1 есть все 4 записи перевода а у сущьности 2 только 3 или 2, можно ли добавить недостающие со значением языка 1?
Максим,
нет немного не то....
дано (id языков зарание известны 1,2,3,4)
----1--------------1----------текст1
----1--------------2----------
----1--------------3----------
----1--------------4----------text1
----2--------------1----------текст2
----2--------------4
----3--------------1----------текст3
----3--------------2
----3--------------3
select distinct entity_id, first_value(text) over (partition by entity_id order by language_id) fv, lang_id
from tableA b
cross join
(/*select 1 lang_id union all*/
select 2 lang_id union all
select 3 lang_id union all
select 4 lang_id) lang
order by entity_id, lang_id
Denis, Вот никогда таким не страдал, но должно получится =) но лучше проверить
INSERT INTO tableA (entity_id, language_id, text)
select f1,f2,fv
from
(select distinct entity_id f1, first_value(text) over (partition by entity_id order by language_id) fv, lang_id f2
from tableA b
cross join
( select 2 lang_id union all
select 3 lang_id union all
select 4 lang_id) lang
) c
where not exists (select 1 from tableA where entity_id = f1 and language_id = f2 and text is not null)
ON DUPLICATE KEY UPDATE text = fv
Вот этот кусок отключает уже заполненные
where not exists (select 1 from tableA where entity_id = f1 and language_id = f2 and text is not null)
но может сработать и ON DUPLICATE KEY UPDATE text = coalesce(text,fv)
проверять чесно лень =)