难查询:Join Parameter、self join、contradictive conditions
difficult query: Join Parameter, self join, and contradicting conditions
我有一个带有 table 命名翻译的数据库。(太棒了...)
在这个table中有4行:id、textidea、translation 和 语言.
id 是每个主键的常规 id
textidea 是单词背后的想法的 id,就像图像一样:当我的意思是 'tree' 这个想法可以翻译成其他语言
translation是textidea的翻译
和语言是翻译的语言
这个table的短函数是:textidea + language = translation
并非每个 textidea 都有每种语言的翻译:我有 10 种语言和 1100 个 Textidea,但只有 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 查询,因为我也在使用 doctrine
谢谢
编辑:
如果我正在做一个左连接,条目少于主要 table:
---------------------
|entry 1|added entry|
---------------------
|entry 2|null |
---------------------
我有一个空条目:我想搜索那个条目
问题:
我想要一种特殊的语言~ where de.language = 'de-DE'
但这不包括 null
-> 我可以加入一个参数吗?所以我可以把 "where de.language ='de-DE'" 放在那里,稍后搜索 null?
我刚刚发现:
after 'JOIN' 跟在 'ON' 之后我们可以指定连接条件,也可以指定我们要放入的内容'哪里'
这使得定制表格成为可能,可以在
的位置进行定制
太棒了:
旧查询:
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)
我有一个带有 table 命名翻译的数据库。(太棒了...)
在这个table中有4行:id、textidea、translation 和 语言.
id 是每个主键的常规 id
textidea 是单词背后的想法的 id,就像图像一样:当我的意思是 'tree' 这个想法可以翻译成其他语言
translation是textidea的翻译
和语言是翻译的语言
这个table的短函数是:textidea + language = translation
并非每个 textidea 都有每种语言的翻译:我有 10 种语言和 1100 个 Textidea,但只有 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 查询,因为我也在使用 doctrine
谢谢
编辑: 如果我正在做一个左连接,条目少于主要 table:
---------------------
|entry 1|added entry|
---------------------
|entry 2|null |
---------------------
我有一个空条目:我想搜索那个条目
问题: 我想要一种特殊的语言~ where de.language = 'de-DE'
但这不包括 null
-> 我可以加入一个参数吗?所以我可以把 "where de.language ='de-DE'" 放在那里,稍后搜索 null?
我刚刚发现:
after 'JOIN' 跟在 'ON' 之后我们可以指定连接条件,也可以指定我们要放入的内容'哪里'
这使得定制表格成为可能,可以在
的位置进行定制太棒了:
旧查询:
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)