搜索数据库时选择值对

时间:2013-08-28 09:45:26

标签: mysql select grouping

在简单的语言翻译表中,我想搜索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_valcs):

fr

所以,我只想将找到的值与其他具有相同名称的值配对。指定两种语言或没有语言的查询对我来说都很好。

还有一个解释:
我有一个具有上述结构的数据库 - 它包含语言名称,条目名称(中性文本)和指定语言的值。我想搜索这个数据库,总是通过2种不同的语言翻译(例如:“Odeslat”,“Demarrer”)和条目名称(例如:“SUBMIT”)搜索。
但是可以省略任何搜索要求。我希望搜索还返回其他语言匹配的所有条目。如上例所示:

用户在语言'fr'中搜索包含“Démarrer”的翻译,而另一种语言是'cs'。因此返回第2行 - 它包含查询。但是,我希望返回第1行,这样我就可以显示捷克版的“Démarrer” 此查询应用于比较翻译。

0 个答案:

没有答案