簡體   English   中英

如何從兩個表(如一個表的所有行)以及相對於其他表的第一個表的主鍵總和中獲取數據

[英]How to get data from two tables like one table all rows and with respect to first table primary key sum of row from other table

表格1:

表2:

結果表:

我需要高效的結果,因為我的原始表有100列,因此我需要使用aysteric(*)。 我目前在mysql工作。

使用聚合查詢:

SELECT
    t1.id,
    t1.Name,
    t1.Email,
    t1.Address,
    t1.Designation
    COALESECE(t2.expenses, 0) AS Expense
FROM Table1 t1
LEFT JOIN
(
    SELECT user_id, SUM(Expense) AS expenses
    FROM Table2
    GROUP BY user_id
) t2
    ON t1.id = t2.user_id;

我們也可以使用帶有聚合的直接聯接來編寫上面沒有子查詢的代碼。 但是,由於GROUP BY子句中出現了許多列,因此我更喜歡給出的版本。

您可以使用下面的查詢直接加入每個用戶的費用總和表。

SELECT userdata.*, (select sum(expense) from expense where expense.user_id=userdata.id) as expense FROM `userdata`  

或使用左聯接

SELECT u.*, sum(e.expense) as expense FROM `userdata` u left join expense e on e.user_id=u.id group by u.id 

這是上述查詢的完整示例(根據您的表結構,請注意更改列名稱)

用戶表

在此處輸入圖片說明

費用表

在此處輸入圖片說明

然后運行查詢

SELECT userdata.*, (select sum(expense) from expense where expense.user_id=userdata.id) as expense FROM `userdata` 

響應

在此處輸入圖片說明

暫無
暫無

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

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