2013-03-07 23 views
2

我有3個表格tb1,users,users_credits。 我GOL是在SEL2組合兩個選擇(SEL1,SEL2)成單個視圖和 顯示0那裏沒有行(左連接?)選擇3個計數並加入表格

SEL1

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

SEL2

​​

表結構

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`) 

什麼是做到這一點的最好方法是什麼? 謝謝。

回答

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 

UPD ATE 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 
+0

+1 SQL可視化表示加入 – 2013-03-07 14:55:32

+0

我收到錯誤_MySQL服務器版本的正確語法使用附近'其中c.id_user = users.userid限制0,30'在行13_ – 2013-03-07 15:08:14

+0

遺憾的是由於copy-and-p再試一次。 – 2013-03-07 15:09:20