所以我在这张表里有一本手册:
id lang header_name text
1 uk Youth Development It's very important
2 dk tst hejsa
3 uk tst hello sir
我想执行一个查询,获取给定语言(在本例中为丹麦语)的所有手动条目。如果由于某种原因,并不是所有的原始手册条目(英国条目)都已被翻译,我希望获得英文条目。在这样的表格格式中,这是可能的吗?
我猜它可能是某种"group by header_name“的东西,但不确定。
发布于 2011-03-29 19:35:44
试一试,我没有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'
)
本质上,首先你需要找到有翻译的ID,然后排除它们。
发布于 2011-03-29 19:47:53
这可能会起作用,但它并没有得到优化:
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'
)
发布于 2011-03-29 19:33:20
我不能评论,但我想问的是:在您刚才的示例中,Id为2和ID 3的行是相同的条目,只是语言不同?
我说你把它拿出来做两张桌子
Example
id
sort
(all other generic columns)
example_translations
id
example_id
language_id
header_name
text
然后,如果查询id为1的示例的丹麦语翻译,它将返回此实体的example_translations行。如果没有返回任何内容,您可以查询英文版本。
我认为在Mysql级别上做这样的事情是不可能的
https://stackoverflow.com/questions/5471732
复制相似问题