2

tb1、users、users_credits の 3 つのテーブルがあります。私のゴールは、2つの選択(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`)

これを行う最善の方法は何ですか?ありがとう。

4

1 に答える 1

1
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

これには 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
于 2013-03-07T14:53:33.860 に答える