簡體   English   中英

選擇3個具有計數和聯接的表

[英]Select 3 tables with count and join

我有3個表tb1,users,users_credits。 我的目標是將兩個選擇(sel1,sel2)組合成一個視圖,並在沒有行(左聯接?)的sel2中顯示0。

SEL1

SELECT 
users.userid, 
users.datareg,
users_credits.credits,
FROM 
users,
users_credits,
WHERE
users.userid = users_credits.userid

SEL2

SELECT COUNT(*) FROM tb1 where tb1.id_user = users.userid

表結構

tb1
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_user` decimal(11,0) NOT NULL,
`datains` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)

用戶

`userid` int(4) unsigned NOT NULL AUTO_INCREMENT,
`datareg` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`userid`)

users_credits

`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) NOT NULL,
`credits` decimal(5,0) NOT NULL,
`data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)

做這個的最好方式是什么? 謝謝。

SELECT  users.userid, 
        users.datareg,
        users_credits.credits,
        COALESCE(c.totalCount,0) totalCount
FROM    users
        LEFT JOIN users_credits
            ON users.userid = users_credits.userid
        LEFT JOIN
        (
            SELECT  id_user, COUNT(*) totalCount 
            FROM    tb1 
            GROUP   BY id_user
        ) c ON c.id_user = users.userid

要進一步獲得有關聯接的知識,請訪問以下鏈接:

更新1

SELECT  users.userid, 
        users.datareg,
        users_credits.credits,
        COALESCE(c.totalCount,0) totalCount,
        c.max_datains
FROM    users
        LEFT JOIN users_credits
            ON users.userid = users_credits.userid
        LEFT JOIN
        (
            SELECT  id_user, MAX(datains) max_datains, COUNT(*) totalCount 
            FROM    tb1 
            GROUP   BY id_user
        ) c ON c.id_user = users.userid

更新2

您需要為此創建兩個視圖:

第一視圖:

CREATE VIEW tbl1View
AS
SELECT  id_user, MAX(datains) max_datains, COUNT(*) totalCount 
FROM    tb1 
GROUP   BY id_user

第二視圖

CREATE VIEW FullView
AS
SELECT  users.userid, 
        users.datareg,
        users_credits.credits,
        COALESCE(c.totalCount,0) totalCount,
        c.max_datains
FROM    users
        LEFT JOIN users_credits
            ON users.userid = users_credits.userid
        LEFT JOIN tbl1View c ON c.id_user = users.userid

暫無
暫無

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

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