[英]SQL Server - Returning Multiple Rows Based on 'IF' Criteria
with a better explanation:有更好的解释:
I'm working in SQL server joining tables that that have multiple rows for each entity - or 'House' in my example data.我在 SQL 服务器连接表,每个实体都有多行 - 或者我的示例数据中的“House”。 I want only those 'House UIDs' that have a type of Garden, Drive and Entrance hall in the table I'm joining to.
我只想要那些在我要加入的表中具有花园、车道和入口大厅类型的“房屋 UID”。 It doesn't matter if they have more than that, but there must be House_UID rows with at least Garden, Drive and Entrance hall as a 'Thing type' value for the House_UID to be returned.
如果他们有更多并不重要,但必须有 House_UID 行,其中至少有 Garden、Drive 和 Entrance hall 作为要返回的 House_UID 的“事物类型”值。
In the example data this would be 1 and 3.在示例数据中,这将是 1 和 3。
I've tried我试过了
Select HOUSE_UID, THING_TYPE from HOUSES
Join HOUSE_THINGS on HOUSES.HOUSE_THING = HOUSE_THINGS.THING
WHERE HOUSE_UID in (select HOUSE_UID from houses
Join HOUSE_THINGS on HOUSES.HOUSE_THING = HOUSE_THINGS.THING
where house_thing = x)
and HOUSE_UID in (select HOUSE_UID from houses
Join HOUSE_THINGS on HOUSES.HOUSE_THING = HOUSE_THINGS.THING
where house_thing = y)
and HOUSE_UID in (select HOUSE_UID from houses
Join HOUSE_THINGS on HOUSES.HOUSE_THING = HOUSE_THINGS.THING
where house_thing = z)
but this doesn't seem to work - I'm getting results that don't have rows for everything I'm interested in. Any new ideas welcome!但这似乎不起作用 - 我得到的结果没有我感兴趣的所有行。欢迎任何新想法!
Thanks谢谢
use aggregation使用聚合
select houseid from table_name
where house in ('Garden', 'Drive','Entrance hall')
group by houseid
having count(distinct house)>=3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.