首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL -需要帮助创建一个以不同方式引用多个表的查询

mySQL -需要帮助创建一个以不同方式引用多个表的查询
EN

Stack Overflow用户
提问于 2019-02-15 13:53:05
回答 1查看 50关注 0票数 0

我很难创建一个查询来从几个表中获取数据。

以下是表:-

我想查询基表,以及其他表,以得到以下行:

因此,基表make_ID值需要引用make表来填充结果中的make列。我在这个查询中所做的一点:-

代码语言:javascript
复制
SELECT code, make, Model_ID, time
FROM makes
INNER JOIN base
ON makes.ID = base.make_ID;

但是,我发现 model 列很棘手,因为我需要从make中获得结果,并使用它来选择正确的表来获得模型。因此,查看第一行,我需要获取make结果,即brillo,然后使用它引用使用model_ID的id的brillo表,以获得finepadE 226

我如何扩展我的查询来做到这一点?任何洞察力都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-15 14:24:23

就像曾傑瑞说的,你需要一个像这样的桌子make_models

代码语言:javascript
复制
+---------------+---------+----------+------------+
| make_model_id | make_id | model_id |   model    |
+---------------+---------+----------+------------+
|             1 |       1 |        1 | finepad    |
|             2 |       1 |        2 | harshpad   |
|             3 |       2 |        1 | toothbrush |
|             4 |       2 |        2 | toothpaste |
|             5 |       3 |        1 | ovenchips  |
|             6 |       3 |        2 | porkpie    |
+---------------+---------+----------+------------+
    ^^ unique identifier

因此,在base表中,您可以引用make_model_id,而不是引用model_id,这是唯一的,因此您可以像对待makes表那样进行连接。

代码语言:javascript
复制
SELECT code, make, Model_ID, time
FROM makes
INNER JOIN base
ON makes.ID = base.make_ID
INNER JOIN make_models
   ON base.make_id = make_models.make_id
  AND base.model_id = make_models.model_id;

或:

代码语言:javascript
复制
INNER JOIN make_models
   ON base.make_models_id = make_models.make_models_id ;

如果您不能更改您的模型,您可以创建一个子查询来动态构建它。查看如何根据来自make_id表的id分配makes

代码语言:javascript
复制
SELECT base.code, makes.make, make_models.model, base.time
FROM base
JOIN make
  ON base.make_id = makes.id
JOIN ( SELECT 1 as make_id, model_id,  model
       FROM brillo
       UNION ALL
       SELECT 2 as make_id, model_id,  model
       FROM colgate
       UNION ALL
       SELECT 3 as make_id, model_id,  model
       FROM mccaine
     ) as make_models
  ON base.make_id = make_models.make_id
 AND base.model_id = make_models.model_id
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54710812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档