首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >自定义排序依据+分组依据

自定义排序依据+分组依据
EN

Stack Overflow用户
提问于 2011-03-29 19:25:09
回答 4查看 287关注 0票数 1

所以我在这张表里有一本手册:

代码语言:javascript
复制
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“的东西,但不确定。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-29 19:35:44

试一试,我没有SQL,因此这是没有测试的表t1,t2,t3引用相同的表使用别名来区分它们;

代码语言:javascript
复制
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,然后排除它们。

票数 1
EN

Stack Overflow用户

发布于 2011-03-29 19:47:53

这可能会起作用,但它并没有得到优化:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2011-03-29 19:33:20

我不能评论,但我想问的是:在您刚才的示例中,Id为2和ID 3的行是相同的条目,只是语言不同?

我说你把它拿出来做两张桌子

代码语言:javascript
复制
Example
id
sort
(all other generic columns)

example_translations
id
example_id
language_id
header_name
text

然后,如果查询id为1的示例的丹麦语翻译,它将返回此实体的example_translations行。如果没有返回任何内容,您可以查询英文版本。

我认为在Mysql级别上做这样的事情是不可能的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5471732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档