1

我正在尝试构建一个表,将来自多个其他表的数据汇总在一起。我需要将四条信息带入这个新表(日期、金额、人员、描述)。对于我的一些源表,这很简单,我可以使用:

$example = mysql_query("
INSERT INTO bigtable (Date, Amount, Person, Description)
   SELECT PayDate, Amount, Payee, Description
   FROM Payments
   WHERE Payee=Bob  
");

但是对于其中一些,Description 字段不存在,但可以通过对通过此特定查询添加的所有项目使用相同的值来创建。所以问题是这样的:我知道如何使用值插入一条记录,但是我如何以编程方式插入一堆记录,以便从另一个表中动态提取某些字段(如上),而其他字段是我指定的值(例如,来自 A 流的收入)。我不完整的努力如下。

$combiner3 = mysql_query("
INSERT INTO ".$name."accttemptable (Date, Amount)
SELECT PayDate, Cash 
FROM IncomeStreamA  
");

有什么帮助吗?

4

1 回答 1

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
...

第二个选择只是一个示例,并假设来自 Bob 的所有内容都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

您可以根据需要链接尽可能多的选择来实现您的目标。

于 2013-02-27T03:26:37.597 回答