MySQL从不同的表中选择ID

Huub S.

Ive有几个桌子,展览,语言,形式和问题。问题在表中有一个lang_idform_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;
西里尔·甘登(Cyril Gandon)

我没有用您的小提琴,因为您对问题的描述如此之好,以至于查询如此简单。

您需要更好地构建表和列的名称。具有良好外观的架构,您描述的查询就是这样的:

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

一些提示:

  • 使用简单的英语,而不是您的本地语言。这样做有很多原因,其中之一是对stackoverflow的回答更容易
  • 不要使用隐式联接(WHERE子句中的联接),而应使用JOIN子句。查询变得更具可读性,并且JOINING和FILTERING之间的区别很明显。JOIN用于联接,WHERE用于过滤。哪里不适合参加。

注意:exhibitionquestion都引用该字段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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL-从不同的表中选择数据

来自分类Dev

MySQL从不同的表中选择与单行链接的照片

来自分类Dev

MySQL-从不同的表中选择数据

来自分类Dev

MySQL按标签从不同的表中选择

来自分类Dev

mySQL:从不同的表中选择一个计数(*)?

来自分类Dev

选择,存储,从不同的表中选择

来自分类Dev

尝试从不同的表中选择行

来自分类Dev

从不同的表中选择多行

来自分类Dev

根据条件从不同的表中选择

来自分类Dev

如何从不同的表中选择相关数据,并使用它显示mysql和php中的趋势?

来自分类Dev

PHP从不同的MySQL表中选择一个订单

来自分类Dev

SQL Server,从不同表的2列中选择

来自分类Dev

SQL Server,从不同表的2列中选择

来自分类Dev

从不同的表中选择并向左联接

来自分类Dev

SQL从不同表中选择多个位置的总和

来自分类Dev

想要从不同的表中选择数据

来自分类Dev

从不同的表中选择和组织相同的列

来自分类Dev

使用子查询而不是连接从不同的表中选择

来自分类Dev

从不同的表格中选择

来自分类Dev

获取从不同的MySQL查询中选择的值的总和-PHP

来自分类Dev

MySQL 也使用 group by 从不同的列中选择计数

来自分类Dev

从mysql中的表中选择不同的表项

来自分类Dev

MySQL从3个不同的表中选择

来自分类Dev

mysql从表中选择不同的月份(缩写)

来自分类Dev

从MySQL中的表中选择不同的表项

来自分类Dev

Mysql在不同的表中选择两列

来自分类Dev

MySQL:如何从表中选择不同的值?

来自分类Dev

MySql通过其他元素从两个不同的表中选择id然后id

来自分类Dev

Mysql 从不同的表中按名称选择