我仍然在学习SQL表,并且已经陷入困境。 我试图根据两个表的条件将数据从另一个表信息复制到表行。 我的例子如下,因为这是我能够正确思考的唯一方法。用户通过表单完成cs和cc的值(完成并正常工作),然后cp,ca和cd的值应填充其他表信息。
Table1
columns = id cs cc cp ca cd
rows = 1 Table2 a ? ? ?
2 Table3 a ? ? ?
Table2
columns = id cc cp ca cd date
rows = 1 a 1 2 3 2015-28-04
2 a 4 5 6 2015-29-04
3 b 7 8 9 2015-28-04
4 b 10 11 12 2015-29-04
我需要使用table2中row1中的值1,2和3来填充table1的第1行中的cp,ca和cd的值。条件是table1的第1行中的cs值等于我们要使用的表的名称,然后table1的第1行中的cc值等于该表的row1中的cc值和今天的日期。
然后我会尝试设置一个cronjob,以便每天使用新值更新值。
我尝试过使用INSERT INTO .... SELECT函数,但复制列而不是数据,我不确定它是否可以根据我需要的条件做我想要的。有关我应该用什么代码执行此操作的任何帮助?谢谢。
答案 0 :(得分:0)
假设Table2,Table3等是一个有限列表(IE,Table1.cs中的表名是已知集),那么您需要对表单进行多次更新:
UPDATE Table1,Table2
SET Table1.cp = Table2.cp,
Table1.ca = Table2.ca,
Table1.cd = Table2.cd
WHERE Table1.cs = 'Table2' AND Table1.id = Table2.id AND Table1.cc = Table2.cc;
UPDATE Table1,Table3
SET Table1.cp = Table3.cp,
Table1.ca = Table3.ca,
Table1.cd = Table3.cd
WHERE Table1.cs = 'Table3' AND Table1.id = Table3.id AND Table1.cc = Table3.cc;
etc for Table4, Table5 ...
或者如果表名是变量且未知的话,那么你需要研究使用mysql Prepared Statements,这是一个相当复杂的主题。见这里 - https://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html