Ive有几个桌子,展览,语言,形式和问题。问题在表中有一个lang_id
和form_id
,展览form_id
在表中有一个。我想选择链接到表格的语言。唯一已知的是展览ID。这是怎么做的?
您可以从Exhibitions表中获取具有已知展览ID的form_id。然后,您可以从中选择问题,form_id
并使用该数据检查与问题相关的语言。但是,如何完成此查询?
这是一个sqlfiddle:http ://sqlfiddle.com/#!9/bb726
我得到的查询是这个:
SELECT f.id, f.name
FROM app_languages f,
app_exhibition b,
app_vragen_translations v
WHERE f.id = b.form_id
AND b.id = 4
AND v.lang_id;
我没有用您的小提琴,因为您对问题的描述如此之好,以至于查询如此简单。
您需要更好地构建表和列的名称。具有良好外观的架构,您描述的查询就是这样的:
SELECT DISTINCT lang.id, lang.name
FROM exhibition
INNER JOIN form
ON exhibition.formId = form.id
INNER JOIN question
ON form.Id = question.formId
INNER JOIN translation
ON translation.formId = form.id
INNER JOIN lang
ON translation.langId = lang.id
WHERE exhibition.id = 4
这是带有小提琴的查询:
SELECT DISTINCT app_languages.id, app_languages.name
FROM app_exhibition
INNER JOIN app_forms
ON app_exhibition.form_id = app_forms.id
INNER JOIN app_vragen
ON app_forms.id = app_vragen.form_id
INNER JOIN app_vragen_translations
ON app_vragen_translations.vraag_id = app_vragen.id
INNER JOIN app_languages
ON app_vragen_translations.lang_id = app_languages.id
WHERE app_exhibition.id = 4
结果 app_exhibition.id = 4
id name
4 German
如果使用其他展览会可获得更多结果 app_exhibition.id = 5
id name
7 Dutch
2 English
一些提示:
注意:exhibition
和question
都引用该字段formId
,因此,form
如果不需要该表的更多信息,则可以省略该表上的联接:
SELECT DISTINCT app_languages.id, app_languages.name
FROM app_exhibition
INNER JOIN app_vragen
ON app_exhibition.form_id = app_vragen.form_id
INNER JOIN app_vragen_translations
ON app_vragen_translations.vraag_id = app_vragen.id
INNER JOIN app_languages
ON app_vragen_translations.lang_id = app_languages.id
WHERE app_exhibition.id = 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句