SQL SELECT вопрос

User avatar
Laki
Удалён за неэтичное поведение
Posts: 3996
Joined: 02 Apr 2001 09:01
Location: SPb->Israel->USA

SQL SELECT вопрос

Post by Laki »

Есть в наличии 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. Должно быть как-то просто, но что-то не получается :(
SBolgov
Уже с Приветом
Posts: 14006
Joined: 17 Jun 2003 04:41

Post by SBolgov »

Ошибся...
Last edited by SBolgov on 01 May 2004 01:29, edited 1 time in total.
Не гоните, и не гонимы будете...
Olegus
Уже с Приветом
Posts: 4642
Joined: 18 Jan 2001 10:01
Location: Kharkov,UA->MA->WA->CT

Post by Olegus »

Попытаюсь :) Давно уже 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
Надо радоваться, не надо напрягаться..
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

или так

Code: Select all

select 
  Name,
  (select count(*) from Staff s where s.UserID=u.ID) as Cnt
from Users u
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

или так :D

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)

Return to “Вопросы и новости IT”