在简单的语言翻译表中,我想搜索lang1< => lang2对。在我的搜索表单中有3个字段: 1.中性文本(条目名称) 2.语言文字1 3.语言2中的文字
如果省略任何字段,则搜索应返回所有内容,但仅当填充字段匹配时才会返回。该表如下所示:
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í
我发现很难找到,如何仅返回匹配的值,但将它们与配对语言相关联(在一个查询中)。我试图根据其他语言的存在来制定一个条件:
//Executes if only one language value is specified
SELECT name, lang, content FROM `texty` WHERE name LIKE $neutral_txt AND (content LIKE $l1_val AND lang=$l1 OR lang=$lang2 AND 0 < (SELECT count(*) FROM `texty` WHERE content LIKE $l1_val AND lang=$l1)) GROUP BY name
我还尝试添加GROUP BY
语句,希望只返回具有相同name
的值,但当前的aproach会返回language2中的所有条目(前提是至少有一个条目匹配{{1} })。
我希望查询返回以下内容(使用语言$l1_val
和cs
):
fr
所以,我只想将找到的值与其他具有相同名称的值配对。指定两种语言或没有语言的查询对我来说都很好。
还有一个解释:
我有一个具有上述结构的数据库 - 它包含语言名称,条目名称(中性文本)和指定语言的值。我想搜索这个数据库,总是通过2种不同的语言翻译(例如:“Odeslat”,“Demarrer”)和条目名称(例如:“SUBMIT”)搜索。
但是可以省略任何搜索要求。我希望搜索还返回其他语言匹配的所有条目。如上例所示:
用户在语言'fr'中搜索包含“Démarrer”的翻译,而另一种语言是'cs'。因此返回第2行 - 它包含查询。但是,我希望返回第1行,这样我就可以显示捷克版的“Démarrer” 此查询应用于比较翻译。