我有一个具有翻译功能的系统,我想在与该语言本身相同的查询中获取翻译后的消息量,以便创建类似“ 134/943已翻译的字符串”的消息。
因此,我首先获得存储在languages
-表中的语言和标题,然后获得LEFT JOIN
存在的字符串总数。
现在下面的代码第三行是我的问题:基本上,我想从a.language的单元格中获取值,并将其插入查询中以计算翻译后的字符串。
SELECT a.`language`, a.`title`, b.`total`, c.`translated` FROM `languages` a
LEFT JOIN (SELECT COUNT(*) as `total` FROM `translations` WHERE 1) b ON 1
LEFT JOIN (SELECT COUNT(*) as `translated` FROM `translations` WHERE `(a.`language`)` IS NOT NULL) c ON 1
用(languages)表中的值替换(a.`language`)。
所以第三行应该以]结尾>
WHERE `en_gb` IS NOT NULL
对于英语和
WHERE `de_de` IS NOT NULL
对于德语,以获取每种语言已经翻译的字符串的数量。
我的桌子看起来像这样:
languages
:
| language | title | |----------|---------| | de_de | German | | en_gb | English |
translations
:
| key | de_de | en_gb | |------------|------------|--------------| | main.hello | Hallo! | Hello! | | main.bye | Tschüss! | Bye! | | main.what | Was? | *NULL* |
在这种情况下,我的查询应输出以下结果:
| language | title | total | translated | |------------|----------|-----------|---------------| | de_de | German | 3 | 3 | | en_gb | English | 3 | 2 |
因为有一个尚未翻译的字符串。
甚至还有一种方法可以执行此操作,或者我必须创建两个查询:一个查询语言,然后每种语言查询已经翻译了多少个字符串?
我有一个具有翻译功能的系统,我想在与语言本身相同的查询中获取翻译后的消息量,以便创建类似“ 134/943已翻译的字符串”的消息。 ...
@@ NicolaUetz我同意@HoneyboyWilson,对于您当前的表结构,唯一可以实现此目的的方法是通过动态sql。