gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:30 25 4
gpt4 key购买 nike

我正在努力创建查询以从多个表中获取数据。

这些是表格:-

enter image description here

enter image description here

enter image description here enter image description here enter image description here

我想查询基表以及其他表,以这些行结束:-

enter image description here

因此,基表 ma​​ke_ID 值需要引用 ma​​kes 表以填充结果中的 ma​​ke 列。这一点我设法用这个查询做了:-

SELECT code, make, Model_ID, time
FROM makes
INNER JOIN base
ON makes.ID = base.make_ID;

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

如何扩展我的查询来执行此操作?任何见解将不胜感激。

最佳答案

正如 Jerry 所说,您需要一个像这样的表 make_models

+---------------+---------+----------+------------+
| 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 表做了

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;

或者:

INNER JOIN make_models
ON base.make_models_id = make_models.make_models_id ;

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

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

关于mySQL - 需要帮助创建以不同方式引用多个表的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54710812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com