我正在尝试构建一个表,将来自多个其他表的数据汇集在一起。我需要将四条信息带入这个新表(日期,金额,人员,描述)。对于我的一些源表,这很简单,我可以使用:
$example = mysql_query("
INSERT INTO bigtable (Date, Amount, Person, Description)
SELECT PayDate, Amount, Payee, Description
FROM Payments
WHERE Payee=Bob
");
但对于其中一些,“描述”字段不存在,但可以通过对通过此特定查询添加的所有项使用相同的值来创建。所以问题是这样的:我知道如何使用值插入单个记录,但是如何以编程方式插入一堆记录,以便某些字段从另一个表中动态提取(如上所述),其他字段是我指定的值(例如,来自A流的收入)。我的不完全努力如下。
$combiner3 = mysql_query("
INSERT INTO ".$name."accttemptable (Date, Amount)
SELECT PayDate, Cash
FROM IncomeStreamA
");
任何帮助?
答案 0 :(得分:0)
如果您理解正确,可以使用UNION ALL
。
INSERT INTO bigtable (`Date`, Amount, Person, Description)
SELECT PayDate, Amount, Payee, Description
FROM Payments
WHERE Payee='Bob'
UNION ALL
SELECT PayDate, Cash, 'Bob', 'Your description'
FROM IncomeStreamA
UNION ALL
SELECT SomeDate, SomeAmount, Firstname, 'Description'
FROM Table3
...
第二个选择仅是一个示例,并假设来自IncomeStreamA
的所有内容都与Bob有关。适当改变它。
您可以使用CASE WHEN
随时随地构建不存在的值。例如
SELECT SomDate,
SomeAmount,
CASE somecolumn
WHEN 1 THEN 'Bob'
WHEN 2 THEN 'Jhon'
ELSE 'Other'
END Person,
'Your description' Description
FROM SomeTable
您可以根据需要选择尽可能多的选择来实现目标。