簡體   English   中英

MySQL的所有行與一列的總和

[英]MySql all rows with sum of one column

我嘗試創建一個查詢以選擇表中所有行的總和為一列名newtotal

這是我的查詢

SELECT * 
FROM   tbl_activities
       ,(SELECT SUM(db_newtotal) as total FROM tbl_activities)  {$sql}

{$ sql}是column_name =從搜索形式輸入的地方

但是我有這個錯誤:

每個派生表必須具有自己的別名

我嘗試這樣做:

SELECT * 
FROM tbl_activities
     ,(SELECT SUM(db_newtotal) as total FROM tbl_activities) as Table {$sql} 

但是我有這個錯誤:

您的SQL語法有誤; 在第1行的'Table where db_projectname ='Barbara Bui'表附近使用正確的語法,請檢查與您的MySQL服務器版本相對應的手冊。

我打印查詢,這是輸出

SELECT * 
FROM tbl_activities
     ,(SELECT SUM(db_newtotal) as total FROM tbl_activities) as Table 
where db_projectname='Barbara Bui'

我想要的輸出應該是這樣的:ll用項目名name ='Barbara Bui'記錄的總和為newtotal

projectname   location    Cost
Barbara Bui   verdun      100
Barbara Bui   kaslik      200 
Barbara Bui   achrafieh   500
Total                     800

詢問

 SELECT * FROM tbl_activities
        union all
        select db_id,db_category,db_subcategory,db_taskname,db_predecessors,db_unit,db_qty,db_wo,db_duration,db_startdate,db_enddate,db_asd,db_add,db_transferredto,db_prb,db_anotes,db_aduration,db_projectname,db_A,db_AA,db_AAA,db_cost,db_status,db_room,db_floor,db_date,sum(db_newtotal) as total from tbl_activities
       {$sql}

錯誤是因為table是保留關鍵字。

您要像這樣使用UNION ALL

select projectname, location, cost
from tbl_activities {$sql}

union all

select 'Total', null, sum(cost)
from tbl_activities {$sql};

使用參數應用where子句,它將變為:

select projectname,
    location,
    cost
from tbl_activities {$sql}

union all

select 'Total',
    null,
    sum(cost)
from tbl_activities {$sql}

如果您在UNION ALL的第一部分中有更多列,請確保在第二個選擇中所有這些空值都包含在內。

select db_id, db_category, db_subcategory, db_taskname, db_predecessors, db_unit, db_qty, db_wo, db_duration, db_startdate, db_enddate, db_asd, db_add, db_transferredto, db_prb, db_anotes, db_aduration, db_projectname, db_A, db_AA, db_AAA, db_cost, db_status, db_room, db_floor, db_date, db_newtotal
from tbl_activities {$sql}

union all

select null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, sum(db_newtotal)
from tbl_activities {$sql}

在大多數RDMS中,表是保留字,因此您不能將其用作別名,請嘗試將其更改為

SELECT * FROM tbl_activities,(SELECT SUM(db_newtotal) as total FROM tbl_activities) as myTable {$sql}

看看是否可行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM