簡體   English   中英

計算和匯總來自不同表的多個列

[英]Count and sum multiple columns from different tables

我有下面的桌子:

表用戶

| id | profile_img |
--------------------
|   21|     name.img|
|   22|     name.img|
|   33|     name.img|

表user_translations

|id | user_id |first_name |
--------------------------
|  1|    21   |  panais |
|  2|    22   |  andreas|
|  3|    33   |  minas  | 

表約

| id | user_id |
----------------
|   1|    33   |
|   2|    22   |
|   3|    21   |

表的東西

| id | user_id |
----------------
|   1|    33   |
|   2|    22   |
|   3|    21   |
|   4|    21   |
|   5|    33   |

每個用戶可以寫

關於文章到about table和事物文章到things table

我想讓所有用戶獲得文章總數。 換句話說,我想從user_translations表上方獲取這些user_translations共寫了3篇文章。

任何幫助表示贊賞。

更新

我已經發布了答案

我無法使用laravel的查詢生成器幫助您,但是在純mysql中,您需要的查詢如下:

SELECT ut.`firstname`,ut.`lastname`,COUNT( DISTINCT(a.`id`) ) + COUNT( DISTINCT(t.`id`) ) as total_articles
FROM `user_translations` ut
INNER JOIN `about` a ON a.`user_id`=ut.`user_id`
INNER JOIN `things` t ON t.`user_id`=a.`user_id`
GROUP BY ut.`user_id`

所以也許您可以使用DB::raw並獲得所需的內容

我不確定我是否理解問題,但是此查詢列出了用戶表中的所有用戶,然后列出了關於和事物表中的條目數:

SELECT users.ID, user_translations.first_name, COUNT(DISTINCT about.ID) AS abt, COUNT(DISTINCT things.ID) as thg
FROM users LEFT JOIN user_translations ON users.ID = user_translations.UserID
LEFT JOIN about ON users.ID = about.userID
LEFT JOIN things ON users.ID = things.userID
GROUP BY users.ID, user_translations.first_name

沒有laravel,@ George Pant有一個很好的答案。

Laravel查詢構建器來回答這個問題:

DB::table('users')
            ->join('about', 'users.id', '=', 'about.user_id')
            ->join('things', 'users.id', '=', 'things.user_id')
            ->join('user_translations', 'users.id', '=', 'user_translations.user_id')
            ->where('user_translations.locale', '=', 'en')
            ->select('first_name', 'last_name', 'user_translations.user_id',
                DB::raw('count(DISTINCT(things.id)) + count(DISTINCT(about.id)) as articles')
            )
            ->groupBy('first_name', 'users.id')
            ->get();

暫無
暫無

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

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