从有条件的2个表中选择值

发布于 2025-02-12 20:10:58 字数 112 浏览 2 评论 0原文

我想从表雇员项目的员工从分配给多个项目的员工的项目名称中选择“值”雇员ID,员工名称, 。

谢谢大家,我可以解决他们,对这个问题感到抱歉不清楚

I want to select values Employee ID, employee first name, project name from tables employee and project of the employee assigned to more than one project.

Thanks everybody I can solve them and sorry about this question is not clear

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

痴情 2025-02-19 20:10:58

您必须使用加入,

select EmplyoeeID, FirstName, ProjectName 
from EmployeeDetail 
join ProjectDetail on EmplyoeeDetailID = EmployeeID
where (select count(*) from ProjectDetail where EmplyoeeDetailID = EmployeeID) > 1

请在此处阅读有关加入的更多信息: https:// https://www.w3schools.com// sql/sql_join.asp

You must use a JOIN

select EmplyoeeID, FirstName, ProjectName 
from EmployeeDetail 
join ProjectDetail on EmplyoeeDetailID = EmployeeID
where (select count(*) from ProjectDetail where EmplyoeeDetailID = EmployeeID) > 1

Please read more about joins here: https://www.w3schools.com/sql/sql_join.asp

淤浪 2025-02-19 20:10:58

请尝试此(简单的内部加入)

SELECT e.EmployeeID, e.firstName, p.ProjectName
FROM Employee e
JOIN ProjectDetail p
ON e.EmployeeID = p.EmployeeDetailID

如果您只想要超过1个项目的员工,

SELECT e.EmployeeID, e.firstName, p.ProjectName
FROM Employee e
JOIN ProjectDetail p
ON e.EmployeeID = p.EmployeeDetailID
WHERE 
    (SELECT COUNT(1) FROM ProjectDetail p2
    WHERE p2.EmployeeDetailID = p.EmployeeDetailID) > 1

Try this (a simple INNER JOIN)

SELECT e.EmployeeID, e.firstName, p.ProjectName
FROM Employee e
JOIN ProjectDetail p
ON e.EmployeeID = p.EmployeeDetailID

If you want only employees with more than 1 project

SELECT e.EmployeeID, e.firstName, p.ProjectName
FROM Employee e
JOIN ProjectDetail p
ON e.EmployeeID = p.EmployeeDetailID
WHERE 
    (SELECT COUNT(1) FROM ProjectDetail p2
    WHERE p2.EmployeeDetailID = p.EmployeeDetailID) > 1
余罪 2025-02-19 20:10:58

窗口功能可能是最有效的

SELECT
  e.EmployeeID,
  e.firstName,
  p.ProjectName
FROM Employee e
JOIN (
    SELECT p.*,
      count = COUNT(*) OVER (PARTITION BY p.EmployeeDetailID)
    FROM ProjectDetail p
) p ON e.EmployeeID = p.EmployeeDetailID AND p.count > 1;

A window function is probably the most efficient

SELECT
  e.EmployeeID,
  e.firstName,
  p.ProjectName
FROM Employee e
JOIN (
    SELECT p.*,
      count = COUNT(*) OVER (PARTITION BY p.EmployeeDetailID)
    FROM ProjectDetail p
) p ON e.EmployeeID = p.EmployeeDetailID AND p.count > 1;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文