gpt4 book ai didi

mysql - 使用 MYSQL 扩展连接表中的值

转载 作者:行者123 更新时间:2023-11-29 05:35:12 25 4
gpt4 key购买 nike

我目前有一个浓度表,它链接到一个元素表。有浓度表

|conc_id|element_id|conc|

与与元素表

|element_id|symbol|

浓度表只有每个具有非零浓度的 conc_id 的 element_ids。我想做的是创建一个查询,该查询将为每个 concentration_id 按顺序列出所有元素及其浓度,而不管它们是否非零。我已经尝试了多种越来越复杂的方法(从 RIGHT JOIN 开始),但是当其中没有该元素时,它总是输出 NULL conc_id。我正在寻找的输出是这样的:

|conc_id|element_id|symbol|conc|
|1 |1 |H |1.2 |
|1 |2 |He |NULL|
|1 |3 |Li |2.3 |
...
|3 |1 |H |4.5 |
|3 |2 |He |NULL|
|3 |3 |Li |NULL|
...

等等。有没有一种方法可以在没有 NULL conc_id 的情况下执行此操作?

提前感谢您的帮助...

最佳答案

首先,您必须构建一个表,其中包含 conc_idelement_id 之间的所有组合:

SELECT DISTINCT conc_id, elements.element_id FROM concentrations, elements;

它为您提供了下表:

| conc_id | element_id |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
...
| 3 | 1 |
| 3 | 2 |
| 3 | 3 |
...

一旦您有了这样的表格,将它与浓度和元素连接起来应该相当简单。例如:

SELECT combinations.conc_id, combinations.element_id, symbol, conc
FROM
(SELECT DISTINCT conc_id, elements.element_id FROM concentrations, elements) AS combinations
LEFT JOIN concentrations ON (combinations.conc_id = concentrations.conc_id AND combinations.element_id = concentrations.element_id)
LEFT JOIN elements ON (combinations.element_id = elements.element_id);

结果:

| conc_id | element_id | symbol | conc |
| 1 | 1 | H | 1.2 |
| 1 | 2 | He | NULL |
| 1 | 3 | Li | 2.3 |
...
| 3 | 1 | H | 4.5 |
| 3 | 2 | He | NULL |
| 3 | 3 | Li | NULL |
...

关于mysql - 使用 MYSQL 扩展连接表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351559/

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