Есть в наличии 2 таблицы в одной есть
ID и UserName в другой UserID StaffID
связаны они по ID и UserID
причем во второй таблице StaffID - уникален и каждому UserID могут соответствовать несколько разных StaffID
т.е. могут быть строки типа
UserID_1 StaffID_1
UserID_1 StaffID_2
UserID_1 StaffID_3
Требуется вывести UserName и колличество StaffID, которые ему принадлежат.
Например так:
UserName CountStaff
Vasja 3
Jeff 0
Petja 6
Хочется сделать за один SELECT. Должно быть как-то просто, но что-то не получается
SQL SELECT вопрос
-
- Удалён за неэтичное поведение
- Posts: 3996
- Joined: 02 Apr 2001 09:01
- Location: SPb->Israel->USA
-
- Уже с Приветом
- Posts: 14006
- Joined: 17 Jun 2003 04:41
-
- Уже с Приветом
- Posts: 4642
- Joined: 18 Jan 2001 10:01
- Location: Kharkov,UA->MA->WA->CT
Попытаюсь Давно уже SQL не трогал.
Code: Select all
Select t1.userID,ti.userName,t2.count from
Table1 t1 left join (select userID,count() count from Table2 group by userID) t2 on t1.userID=t2.userID
Надо радоваться, не надо напрягаться..
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
или так
Code: Select all
select
Name,
(select count(*) from Staff s where s.UserID=u.ID) as Cnt
from Users u
Никакой разрухи нет. (с) Проф. Преображенский.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
или так
осторожно с ANSI WARNING (если это SQL Server)
Code: Select all
SELECT MIN(t1.UserName), COUNT(t2.StuffID) Cnt
FROM t1 LEFT JOIN t2 ON t1.ID = t2.UserID
GROUP BY t2.UserID
осторожно с ANSI WARNING (если это SQL Server)