【发布时间】:2014-04-22 20:10:09
【问题描述】:
当我使用右连接时,我得到的结果与使用左连接或只连接相同。谁能告诉我哪里出错了?
我有3张表如下:
语言
身份证
代码,例如“hu”,“en”
language_default
身份证
文字
语言翻译
身份证
lang_id (FK 语言表中语言的 id)
default_lang_id(FK 语言默认表中文本的 id)
文本(翻译)
当我执行以下查询时,我希望从 language_translations 表中获取所有匈牙利语翻译,并从 language_default 表中获取所有文本字段,其中没有匈牙利语翻译的值为空。
SELECT `language_translations`.`text`
, `language_default`.`text`
FROM `languages`
, `language_translations`
RIGHT JOIN `language_default` ON `language_default`.`id` = `language_translations`.`default_lang_id`
WHERE `languages`.`code` = 'hu'
AND `languages`.`id` = `language_translations`.`lang_id`
相反,我只从 language_default 表中获取文本,其中翻译表中有该文本的翻译。我希望这种行为来自左连接或正常连接,而不是右连接。任何想法为什么我没有从 langugage_defailt 表中获取所有条目?
【问题讨论】:
-
您是在每个
language_translation的language_default的每个条目之后(在这种情况下您想要一个CROSS JOIN)还是只是想确保来自language_default的每个条目都加入到language_translation至少一次(在这种情况下,这就是你当前的RIGHT JOIN应该做的)?