MySQL,使用其他表中的数据创建表

时间:2016-03-25 22:29:49

标签: mysql sql database database-design

你能帮我设计一个MySQL查询来创建一个包含来自其他3个表的数据的表吗?

数据库设计:

enter image description here

我试过的是:

INSERT INTO SklepZaloha (TIME)
    SELECT TIME FROM Item1;
INSERT INTO SklepZaloha (Boiler)
    SELECT Value FROM Item1;
INSERT INTO SklepZaloha (Zpatecka)
    SELECT Value FROM Item2;
INSERT INTO SklepZaloha (Vymnenik)
    SELECT Value FROM Item3;

但结果是:a a b b b c c c而不是:a b c a b c a b c

2 个答案:

答案 0 :(得分:0)

您的public static String toFraction(double d, double err) { String s = Long.toString((long) d); d -= (long) d; if (d > err) { for (int den = 2, max = (int) (1 / err); den < max; den++) { long num = Math.round(d * den); double d2 = (double) num / den; if (Math.abs(d - d2) <= err) return (s.equals("0") ? "" : s + " ") + num +"/"+den; } } return s; } public static void main(String... args) { System.out.println(toFraction(1.0/3, 1e-6)); System.out.println(toFraction(1.23456789, 1e-6)); System.out.println(toFraction(Math.E, 1e-6)); System.out.println(toFraction(Math.PI, 1e-6)); for (double d = 10; d < 1e15; d *= 10) System.out.println(toFraction(Math.PI, 1.0 / d)); } 需要一次插入整行,而不是一次只丢掉一个值。为此,您需要使用1/3 1 19/81 2 719/1001 3 16/113 3 1/5 3 1/7 3 9/64 3 15/106 3 16/113 3 16/113 3 3423/24175 3 4543/32085 3 4687/33102 3 14093/99532 3 37576/265381 3 192583/1360120 3 244252/1725033 3 2635103/18610450

INSERT ... SELECT

JOIN 部分也是 INSERT INTO SklepZaloha (`Time`, Boiler, Zpatecka, Vymnenik) SELECT i1.`Time`, i1.Value, i2.Value, i3.Value FROM Item1 i1 INNER JOIN Item2 i2 ON i1.`Time` = i2.`Time` INNER JOIN Item3 i3 ON i1.`Time` = i3.`Time`; 查询的正确语法。

答案 1 :(得分:-1)

我可以告诉你一件事,你很可能必须在存储过程中使用预备语句。我已经有一段时间了,但是在存储过程中你可以使用数据访问表,然后构建一个准备好的语句然后执行。

关于存储过程和预准备语句的MySQL文档非常好。

我隐约记得,但是,在存储过程中执行此类语句时会出现问题。

抱歉,我可以提供更多帮助。

迈克尔