我有一个数据库,其中有一个名为translations的表。(令人惊讶...)
此表中有4行: id ,文本思想,翻译和语言。
id 是每个主键的常规ID
textidea 是该词背后的主意的ID,就像图片一样:当我指的是“树”时,该主意可以翻译成其他语言
翻译是文本想法的翻译
和语言是翻译所用的语言
此表的简短功能是:textidea +语言=翻译
不是每个Textidea都有每种语言的翻译:我有10种语言和1100个Textideas,但是只有7000种翻译
我的工作是从数据库中获取目标语言尚无翻译的每一个textidea和英语翻译
将其打包为txt文件,可以将英语单词大量翻译为其他语言
我的SQL查询非常有效:它没有结果(空结果):
SELECT t.textidea,t.translation
FROM translation AS t
LEFT JOIN translation AS w //table joins itself
ON t.textidea = w.textidea
WHERE (t.language = 'en-US'
AND w.language = 'de-DE' //de-DE is German and is as example
AND w.translation IS NULL //target language here
AND t.translation IS NOT NULL)
我可以在SQL查询中做得更好吗? 如果可能的话,您可以进行dql查询,因为我也使用了教义
谢谢
编辑: 如果我正在进行左联接,且条目数少于主表:
---------------------
|entry 1|added entry|
---------------------
|entry 2|null |
---------------------
我有一个条目为空:我想搜索该条目
问题: 我想要一种特殊的语言〜其中de.language ='de-DE'
但这不包括空值
->我可以加入参数吗?这样我就可以在其中放置“ where de.language ='de-DE'”,以后再搜索null?
答案 0 :(得分:0)
我刚刚发现:
在“ JOIN ”之后紧跟在“ ON ”之后,在此我们可以指定联接条件,还可以指定要放置在“ WHERE '
这使得有可能具有定制的表,这些表可以在
的位置进行定制sooo:
旧查询:
SELECT t.textidea,t.translation
FROM translation AS t
LEFT JOIN translation AS w
ON t.textidea = w.textidea
WHERE (t.language = 'en-US'
AND w.language = 'de-DE'
AND w.translation IS NULL
AND t.translation IS NOT NULL)
更改:
ON t.textidea = w.textidea AND w.language = 'de-DE'
新的有效查询:
SELECT t.textidea,t.translation
FROM translation AS t
LEFT JOIN translation AS w
ON t.textidea = w.textidea AND w.language = 'de-DE'
WHERE (t.language = 'en-US'
AND w.translation IS NULL
AND t.translation IS NOT NULL)