SQL特定问题 - 获取属于集合的所有项目的子项

时间:2011-01-20 16:44:02

标签: sql linq

架构在这里:

GROUP 1 ----> * USER 1 ----> 1人1 ---> * ADRESSE 1 -----> 1个城市

我想只获得属于所有用户

的城市

是可能本地使用sql还是我需要迭代地执行它。

以简单的方式说:我只想要一个城市列表,其中该组的每个用户都与...有关。

不要专注于现实生活,在这个模型中,用户可以拥有数千个城市......

我可以尝试绘制它(可能更简单)

GROUP 1 -----> USER 1 -> PERSON 1-> ADRESSE 1 -> CITY 1
        -----> USER 2 -> PERSON 2-> ADRESSE X -> CITY 1
        -----> USER 2 -> PERSON 2-> ADRESSE Y -> CITY 2
        -----> USER 3 -> PERSON 3-> ADRESSE Z -> CITY 1

I want only CITY 1

2 个答案:

答案 0 :(得分:1)

这会让你入门吗?

Select cityname, count(distinct userID) 
from  User u inner join Person p on  u.personID = p.personID 
inner join Adresse a on  p.addressID = a.addressID
inner join City c on a.cityID = p.cityID 
group by cityName

答案 1 :(得分:0)

假设您在每个表中都有ID字段将它们绑定在一起...使用这种类型的where子句将只返回具有城市的行...

Select * 
from Group, User, Person, Adresse, City 
where city.cityID = addresse.cityID 
and addresse.addressID = person.adresse.addressID 
and person.personID = user.personID 
and user.userID = group.userID