2012-11-30 48 views
0

我有4个表,在这个表中有3行[记录]和3列[字段]字段,如日期名称总数。该表如下图所示:以表格形式在PHP中显示SQL输出

首先表

Date     Name      Total 
2012-11-07    Manoj      10 
2012-11-08    Ganesh      4 
2012-11-09    Sri       30 

二表

Date     Name      Total 
2012-11-07    Raju       5 
2012-11-08    ggg       3 
2012-11-09    Shshi      30 

三表

Date     Name      Total 
2012-11-07    Ram       2 
2012-11-08    gm       5 
2012-11-09    Shsse      30 

我需要一个像以下类型的输出在PHP中:

Date   Total 
2012-11-07  17 
2012-11-08  12 
2012-11-09  90 

应该显示所有总日期间在PHP

+0

可能重复的[PHP中所有表格行字段的总和](https://stackoverflow.com/questions/13624915/make-sum-of-all-table-row-field-in-php) –

回答

0

您可以通过之日起3个表之间的内部连接,并使得在总数之和(在一个新的领域)。

例如

SELECT t1.date, (t1.total + t2.total + t3.total) AS final_total 
FROM t1 
INNER JOIN t2 ON t1.date=t2.date 
INNER JOIN t3 ON t1.date=t3.date 
GROUP BY t1.date 
+0

只有Table1具有所有可用日期时,内部联接才会起作用。如果表2和3中的日期不在表1中,则这些总和将被省略。 –

+0

是的你是对的,没有看到 – pablomarti

1

您可以创建一个SQL语句,将合并所有表的创建,结果一个表,你正在寻找:

SELECT DATE, SUM(TOTAL) AS TOTAL 
FROM 
(
SELECT DATE, TOTAL FROM Table1 
UNION ALL 
SELECT DATE, TOTAL FROM Table2 
UNION ALL 
SELECT DATE, TOTAL FROM Table3 
) AS AllTables 
WHERE Date BETWEEN '1 JAN 2012' AND '13 JAN 2012' 
GROUP BY Date 

这个结果可以在PHP中显示,因为你会任何其他表

+0

确定理查德薇薇安成功完成在PHP中,但我需要它显示在日期之间,是否有可能?请在这里写代码如日期2012-11-10和2012-11-01之间谢谢 –

+0

好了理查德薇薇安成功完成在PHP中,但我需要它显示在日期之间,是否有可能?请在此处编写代码,如Date在2012-11-10和2012-11-01之间order by desc in php only thank you –

+0

请参阅上面编辑的SQL以添加where子句。根据您连接到的SQL DB,您可以创建上述SQL作为视图,并从视图中选择日期介于开始日期和结束日期之间。可以让PHP选择更简单。 –

0

假设表是datelist,datelist2和datelist3,然后使用下面的代码:

SELECT 
dateslist.`Date`,SUM(dateslist.`Total`+datelist2.`Total`+datelist3.`Total`) 
FROM 
`dateslist` 
JOIN 
datelist2 on dateslist.Date=datelist2.Date 
JOIN 
datelist3 ON datelist2.Date=datelist3.Date GROUP BY dateslist.Date