【问题标题】:Need Help with a mysql query需要有关 mysql 查询的帮助
【发布时间】:2011-04-18 17:55:30
【问题描述】:

我有 2 张桌子 第一张桌子。员工(empid-主键,empname) 例如:员工表

1 john 

2 martyn 

3 davis 

第二个表格文件(empid,documentname) 例如:

1 address.doc 

1 worksheet.doc 

1 salaryslip.doc 

3 address.doc 

每个员工在员工表中只有一个条目 但在文档表中,为每个员工插入零个或多个条目。

我想编写一个查询,给出如下所示的输出

empid empname documentflag 
1 john true 
2 martyn null 
3 davis true 

也就是说,如果文档表中至少有一个员工条目,则设置相应的文档标志为真。否则将文档值设置为空。 有没有使用连接的有效方法。 提前致谢

【问题讨论】:

  • 您可以尝试结合使用 UPDATE 和 IF NOT NULL ...

标签: mysql


【解决方案1】:

您可以使用 LEFT JOIN 来包含文档表,使用 GROUP BY 以便每行仅获得 1 名员工,并使用 IF() 构造来输出您想要的 documentflag 值。

SELECT e.empid, e.empname, IF(d.empid IS NULL, NULL, TRUE) `documentflag`
FROM employee e
LEFT JOIN documents d ON (d.empid = e.empid)
GROUP BY e.empid

【讨论】:

    【解决方案2】:
    SELECT
        empid, 
        empname,
        documentFlag
    FROM employee emp 
    LEFT OUTER JOIN 
    (SELECT doc.empid, count(doc.empid)as documentFlag
     FROM documents doc Group by empid) X
    ON emp.empid = X.empid
    

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多