Mysql - 将具有不同行数的3个表连接到另一个表中

时间:2017-03-12 13:01:19

标签: mysql

我有以下表格,我需要加入它们:

表A

int Matriz::calcularDeterminante()
{   
    int numero=0;
    int signo = 1;
    if (n_filas == 1) {
        return (this->matriz[0][0]);
    }
    else if (n_filas == 2) {
        return (this->matriz[0][0] * this->matriz[1][1]) - (this->matriz[0][1] * this->matriz[1][0]);
    }
    else {
        for (int i = 0; i < n_filas; i++) {
            if (signo == 0) {
                numero += -1* matriz[0][i] * calcularDeterminante();
                signo++;
            }
            else if (signo == 1) {
                numero += signo * matriz[0][i] * calcularDeterminante();
                signo--;
            }               
        }
    }
return numero;
}

表B

+----+----------+--------+
| ID | Period   | Value  |
+----+----------+--------+
| 1  |2009-02-01|  20.3  |
| 2  |2009-03-01|  22.5  |
| 3  |2009-04-01|  17.4  |
| 4  |2009-05-01|  16.5  |
| 5  |2009-06-01|  26.5  |
| 6  |2009-07-01|  35.4  |
+----+----------+--------+

表C

+----+----------+--------+
| ID | Period   | Value  |
+----+----------+--------+
| 1  |2009-04-01|  57.1  |
| 2  |2009-05-01|  56.5  |
| 3  |2009-06-01|  59.8  |
| 4  |2009-07-01|  55.4  |
+----+----------+--------+

我的输出表已经创建为空表,如下所示:

表D

+----+----------+--------+
| ID | Period   | Value  |
+----+----------+--------+
| 1  |2009-03-01|  82.5  |
| 2  |2009-04-01|  87.4  |
| 3  |2009-05-01|  86.7  |
+----+----------+--------+

由于表A包含我想将其用作主表的大多数记录。期望的结果如下:

表D

+----+----------+--------+--------+--------+
| ID | Period   | ValueA | ValueB | ValueC |
+----+----------+--------+--------+--------+

我是MySQL的新手。我在论坛中查看了类似的问题并试图为自己弄清楚但没有成功。

任何帮助表示赞赏。

ANSWER

确定。一些事情。首先问题不重复!事情看起来更像是一个快速的主持人而不是重复的问题。不,我在本网站的任何地方都没有找到这个答案,而且肯定不是主持人回答的建议。

现在有趣的部分。 在花了几个小时后,在创意主持人的帮助下,我终于开始工作了。正如我在原始问题表D中所说的那样已经存在。这是因为该模型由第三方应用程序创建和管理。在这种情况下Django。这是重要的一点,否则操作将是不同的。我在服务器上也有多个模式。 我认为在这种情况下,此查询的最佳方法是使用别名,如下所示:

+----+----------+--------+--------+--------+
| ID | Period   | ValueA | ValueB | ValueC |
+----+----------+--------+--------+--------+
| 1  |2009-02-01|  20.3  | NULL   | NULL   |
| 2  |2009-03-01|  22.5  | NULL   | 82.5   |
| 3  |2009-04-01|  17.4  | 57.1   | 87.4   |
| 4  |2009-05-01|  16.5  | 56.5   | 86.7   |
| 5  |2009-06-01|  26.5  | 59.8   | NULL   |
| 6  |2009-07-01|  35.4  | 55.4   | NULL   |
+----+----------+--------+--------+--------+

1 个答案:

答案 0 :(得分:0)

您正在寻找object = proxify(object, function(object, property, oldValue, newValue) { console.log('property ' + property + ' changed from ' + oldValue + ' to ' + newValue); });

left join

填写insert into d( . . . ) select . . . from a left join b on a.period = b.period left join c on a.period = c.period; 所在的列。