分享
三行代码  ›  专栏  ›  技术社区  ›  Daniel Richter

Sql select对象及其所有可能的引用

  •  0
  • Daniel Richter  · 技术社区  · 1 周前

    • 结构(id整数,名称文本)
    • 属性(id INTEGER,name TEXT)

    • 属性到结构(结构id,属性id,唯一(结构id,属性id))

    现在我要提出一个SQL请求,它将选择所有具有所有现有属性的结构。

    我已经试过了:

    select 
        fabric_id, fabric_name 
    from 
        properties_to_fabric 
    where
        count(select * from properties_to_fabric where fabric_id = fabric_id) = count(select * from property);
    

    不过,那不管用,我也没有其他想法。

    数据库是SQLite3,如果它是重要的

    2 回复  |  直到 1 周前
        1
  •  0
  •   Gordon Linoff    1 周前

    您可以使用聚合:

    select pf.fabric_id
    from properties_to_fabric pf
    group by pf.fabrid_id
    having count(*) = (select count(*) from properties);
    

    笔记:

    • join fabrics
    • 如果可以为给定的结构复制属性,则使用 having count(distinct property_id) = . . . .
        2
  •  0
  •   forpas    1 周前

    可以使用“不存在”来执行此操作:

    select f.* from fabric f
    where not exists (
      select 1 from property p
      where (f.id, p.id) not in (select fabric_id, prop_id from properties_to_fabric)
    )
    

    查看简化版 demo .