【问题标题】:SQLite Query Display Name with WHERE condition - Multiple Tables带有 WHERE 条件的 SQLite 查询显示名称 - 多个表
【发布时间】:2016-03-01 23:04:56
【问题描述】:

我目前正在学习 sqlite,到目前为止我一直在使用 sqlite manager。

我有不同的表格,想选择所有有 3 人或更多人参与过的项目名称。

我的项目表如下所示:

CREATE TABLE "Project" 
("Project-ID" INTEGER PRIMARY KEY NOT NULL , "Name" TEXT, "Year" INTEGER)

我有我的关系,它指定有多少人在一个项目上工作:

CREATE TABLE "Works_on" 
("User" TEXT, "Project-ID" INTEGER, FOREIGN KEY(User) REFERENCES People(User), 
FOREIGN KEY(Project-ID) REFERENCES Project(Project-ID), PRIMARY KEY(User, Project-ID))

所以在简单的视图中(遗憾的是我无法上传图片)你在“Works_on”关系中有这样的东西:

User   | Project-ID
-------+-----------
Greg   | 1
Daniel | 1
Daniel | 2
Daniel | 3
Jeny   | 3
Mark   | 3
Mark   | 1

现在我需要选择 3 个或更多人正在从事的项目的名称,这意味着我需要项目 3 和 1 的名称。

到目前为止,我尝试使用 count(),但不知道如何获取名称:

SELECT Project-ID, count(Project-ID) 
FROM Works_on 
WHERE Project-ID >= 3

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    您需要使用像这样的有子句加入和分组:

    SELECT t.project-id,t.name
    FROM project t
    INNER JOIN works_on s
     ON(t.project-id = s.project-id)
    GROUP BY t.project-id,t.name
    HAVING COUNT(*) > 2
    

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT t1.Project-ID, t1.Name
      FROM Project AS t1
      JOIN (
         SELECT Project-ID
         FROM Works_on 
         GROUP BY Project-ID
         HAVING COUNT(*) >= 3
      ) AS t2 ON t1.Project-ID = t2.Project-ID
      

      【讨论】:

      • 非常感谢这个工作,但是该死的,离我最初的解决方案太远了,仍然需要学习很多东西。将在 5 分钟内接受。
      【解决方案3】:

      小组处理项目 ID 和计数用户(即记录)。保留 3 个或更多用户的项目 ID。然后从找到的项目中选择项目ID。

      select name
      from project
      where "Project-ID" in
      (
        select "Project-ID"
        from works_on
        group by "Project-ID"
        having count(*) >= 3
      );
      

      顺便说一句,“Project-ID”是一个错误的列名。您每次都需要引号,以阻止 DBMS 将其解释为减号操作。将其命名为 project_id 或类似名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-02
        • 2018-05-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 2012-06-04
        相关资源
        最近更新 更多