Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL从多个表插入多个元组_Mysql_Sql - Fatal编程技术网

MySQL从多个表插入多个元组

MySQL从多个表插入多个元组,mysql,sql,Mysql,Sql,我有两张桌子,emp桌子和dept桌子 以下是emp表的示例 empno, firstname, lastname, workdept, salary 000010, Christine, Haas, A00, 312750.00 000020, Michael, Thompson, B01, 161250.00 这是dept表的一个示例 deptno, deptname, mgrno, admrdept A00, Spiffy Computer Service DIV., 000010, A

我有两张桌子,emp桌子和dept桌子

以下是emp表的示例

empno, firstname, lastname, workdept, salary
000010, Christine, Haas, A00, 312750.00
000020, Michael, Thompson, B01, 161250.00
这是dept表的一个示例

deptno, deptname, mgrno, admrdept
A00, Spiffy Computer Service DIV., 000010, A00
B01, Planning, 000020, A00
我想将这两个表中的信息插入一个名为dept2的新表,该表包含以下列:

did=deptno dname=deptname 预算=每个部门的预算 超过部门所有员工工资总额的20% managerid=mgrno
我可以将did、dname和managerid插入表中。我面临的唯一问题是预算列,因为我被要求不使用JOIN语句,甚至不使用触发器进行此查询。我仍然是MySQL的初学者,所以请对我放松。

下面是一个可以帮助您完成工作的查询

INSERT INTO dept2
SELECT D.deptno,D.deptname,E.salary+((E.salary*20)/100),D.mgrno
FROM emptable E
JOIN depttable D ON E.workdept=D.deptno
您可以使用子查询

插入Dept2 选择D.Deptno,D.Deptname,从Emp中选择SUMsalary*1.20,其中workdept=D.Deptno,D.mgrno
从D部门我没有试过,但我想

INSERT INTO Dept2 (did, dname, budget, managerid)
SELECT D.Deptno,D.Deptname, SUM(E.salary)*1.20,D.mgrno  
FROM Dept D, Emp E
WHERE E.workdept=D.deptno
Group by d.deptno, d.deptname,d.mgrno

应该工作

为什么不能使用联接?您实际使用的是哪台服务器?mysql和sql server是两个相互竞争的产品,它们相似但不相同different@TZHX我还是MySQL的新手,尽管我已经在互联网上对它做了公平的研究,但我还没走到学习JOIN语句的阶段。很抱歉让人困惑,我正在编辑sql server标记。感谢您的快速回复,但是有没有任何方法可以在没有加入的情况下完成查询?没有加入的情况下,您无法完成查询,除非您在depttable中包含薪资列。如果你这样做,它将打破规范化概念@Kaze Toushin
INSERT INTO Dept2 (did, dname, budget, managerid)
SELECT D.Deptno,D.Deptname, SUM(E.salary)*1.20,D.mgrno  
FROM Dept D, Emp E
WHERE E.workdept=D.deptno
Group by d.deptno, d.deptname,d.mgrno