Bu pasajı göstermek için yaptım: http://sqlfiddle.com/#!6/ed243/2Basitçe sayımı (*) göstermek yerine kimlik oluşumlarına nasıl katılır?
Şema:
create table professional(
id int identity(1,3) primary key,
name varchar(20)
)
insert into professional values('professional A')
insert into professional values('professional B')
insert into professional values('professional C')
create table territory(
id int identity(2,3) primary key,
name varchar(20)
)
insert into territory values('territory A')
insert into territory values('territory B')
insert into territory values('territory C')
create table panel(
id int identity(3,3) primary key,
idProfessional int not null,
idTerritory int not null,
)
insert into panel values(1, 2)
insert into panel values(4, 5)
insert into panel values(7, 8)
insert into panel values(1, 5)
insert into panel values(7, 8)
insert into panel values(7, 2)
Ve şu ana kadar var sorgusu:
select
p.id, p.name, count(*) as Territories
from
(select distinct idProfessional, idTerritory from panel) panel
inner join
professional p
on p.id = panel.idProfessional
group by
p.id,
p.name
having count(*) > 1
order by p.id
yukarıdaki sorgu sonucunda gösteriliyorsa kaç topraklarında her profesyonel, ile farklı filtrelemeyi ve yalnızca birden fazla terrede çalışan profesyonelleri göstererek çalışır sahip itory:
-------------------------------------------------------
| id | name | Territories |
-------------------------------------------------------
| 1 | professional A | 2 |
| 7 | professional C | 2 |
-------------------------------------------------------
Tamam, ama .. her idTerritory"2, 5"
yerine count(*)
gibi katıldı Territories
göstermek mümkün mü?
Şimdiden teşekkürler.
Oldukça emin böyle bir şey arıyor ?? [SQL Server'da grup \ _concat MySQL işlevini simüle etmek mi?] (Http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-sql-server) –
@SeanLange. Alanlara katılmaya yardımcı olabileceğini düşünüyorum, ancak bu alanları nasıl alacağımı bilmiyorum: -/ –