2016-07-25 4 views
0

私は2つのテーブルmysqlの列を「カウント」する前に最後のid値を取得する方法は?

SELECT 
    tab.id 
    ,tab.name 
    ,tab2.id 
    ,tab2.name 
    ,count(distinct tab3.id) as totalusers 
FROM master tab 
    LEFT JOIN user as tab2 ON tab.id = tab2.cod 
    LEFT JOIN user as tab3 ON tab.id = tab3.cod 
WHERE tab.id = 5 limit 1 
ORDER BY tab2.id DESC 

OR

SELECT 
    tab.id 
    ,tab.name 
    ,tab2.id 
    ,tab2.name 
    ,count(tab2.id) 
FROM master tab 
    LEFT JOIN user as tab2 ON tab.id = tab2.cod 
WHERE tab.id = 5 limit 1 
ORDER BY tab2.id DESC 

の値を選択すると、私は

+ ------ + -------- + ------- + --------- + ------------------ + 
| tab.id | tab.name | tab2.id | tab2.name | count(tab3.id)  | 
+ ------ + -------- + ------- + --------- + ------------------ + 
| 5  | home1 | 132  | joao  | 3     | 
+ ------ + -------- + ------- + --------- + ------------------ + 

を得たが、tab2.idは、オーダーをテーブルの最初の値を取得私は値を数えるときに動作しません、どのように私は最後のキーを取得すると彼の名前は?

ユーザー

+ ---- + ----- + --- + 
| id | name | cod | 
+ ---- + ----- + --- + 
| 132 | joao | 5 | 
+ ---- + ----- + --- + 
| 133 | well | 5 | 
+ ---- + ----- + --- + 
| 134 | cindy | 5 | 
+ ---- + ----- + --- + 

OBS:MAX()(Return last id and count of id)に役立ちますが、私はあまりにもユーザーから名前を必要とする、私は、サブクエリなしで1行(リミット1)と接合する場所にそれを作ることができます?

答えて

1

あなたは、内側が

select tab.id, tab,name, t2.id, t2.name, count(*) 
from tab 
inner join 
(select id, name, code from 
user where id = (select max(id) from user)) t on t.cod = tab.code 
inner join user as uset.code = tab.code 
group by tab.id, tab,name, t2.id, t2.name 
+0

おかげで参加して、グループの必要があるように見える、それは働きます! – israel

+0

@israelまあ..もし私の答えが正しいなら、それを合格とマークしてください。 – scaisEdge

関連する問題