将单元格中的文本内容用作同一JOIN查询中的列变量

问题描述 投票:1回答:1

我有一个具有翻译功能的系统,我想在与该语言本身相同的查询中获取翻译后的消息量,以便创建类似“ 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已翻译的字符串”的消息。 ...

mysql
1个回答
0
投票

@@ NicolaUetz我同意@HoneyboyWilson,对于您当前的表结构,唯一可以实现此目的的方法是通过动态sql。

© www.soinside.com 2019 - 2024. All rights reserved.